David는 레코드판 전문가입니다. 추천을 요청하거나 Discogs 컬렉션에 있는 기록에 대한 추가 정보를 요청할 수 있습니다. David가 기꺼이 도와드릴 것입니다.
이 LLM 애플리케이션은 Discogs API를 사용하여 레코드판에 대한 정보를 제공하는 대화형 에이전트의 간단한 예입니다. 이는 4개의 주요 빌딩 블록으로 구성됩니다.
현재 AI 보조 엔진으로 GPT-4o와 함께 LangChain4j를 프레임워크로 사용하지만 다른 엔진을 사용하도록 쉽게 조정할 수 있습니다.
아래 다이어그램의 애플리케이션 아키텍처는 ArchitectureTest 클래스의 테스트를 통해 ArchUnit 프레임워크에 의해 시행됩니다.
이 프로젝트의 UI는 다음 프롬프트를 사용하여 개발되었습니다.
I need the code for an HTML 5 page that contains an input field for a Discogs username
and a text area for inserting prompts for the application to send to AI agents.
Above the text area there should be the space in which the AI responses are displayed, in the ChatGPT style
GitHub Copilot에서 생성된 HTML5 코드는 UI에 대한 초기 시각적 요소를 제공한 다음 웹소켓 연결과 AI 도우미로부터 메시지를 보내고 받는 논리를 추가하도록 수정했습니다. 나는 이것이 프로토타이핑에 대한 매우 빠른 접근 방식이라는 것을 알았습니다. 그런 다음 pro-chat을 포함하여 ant-design에서 더욱 강력한 구성 요소로 옮겼습니다.
처음에는 llama3을 사용하고 싶었습니다. llama3 모델은 현재 도구를 지원하지 않습니다(2024년 6월). 이는 AI 도우미가 Discogs 사용자 이름을 수집하고 자체적으로 레코드 컬렉션을 검색할 수 없음을 의미합니다. David가 Discogs 정보를 요청하고 양식이 필요하지 않도록 GPT-4o로 전환했습니다.
일부 LLM은 다른 LLM만큼 똑똑하지 않습니다. Mistral 7b 모델이 툴을 지원하는데도 불구하고 좋은 답변을 얻지 못했습니다. 통합 테스트도 통과하지 못했습니다. 그렇기 때문에 도구를 사용하여 LLM을 무료로 실행할 수 없었습니다.
환각은 고통입니다. 나는 그것을 최소화하는 방법으로 RAG로의 여정을 시작하고 있습니다. David가 음악 분야에서 활동하고 있기 때문에 Wikipedia는 RAG에게 가장 먼저 떠오르는 지식 기반입니다. 아마도 대화와 관련된 음악 페이지를 검색하기 위해 MediaWiki API를 활용할 수 있을 것입니다. 지금은 Google 검색만 사용하고 있으며 때로는 도움이 되지만 확실히 토큰으로 추가되는 비용에 비해 충분하지 않습니다.
LLM 지원서를 테스트하는 것은 어려운 일이었습니다. 평소보다 통합 테스트를 더 많이 했습니다. 이로 인해 개발 주기가 느려졌습니다. 또한 AI 도우미의 확률적 특성으로 인해 결정론적인 방식으로 애플리케이션을 테스트하기가 어렵습니다.
LLM 세계의 단위 테스트에서는 단순히 코드 단위를 호출하는 대신 AI 모델을 프롬프트하는 것이 포함됩니다. 클라우드 기반 모델을 사용하는 경우 단위 테스트를 실행하는 데 비용이 듭니다. 또한 기본 AI의 결과를 확인하는 데 도움이 되는 두 번째 AI 에이전트를 사용하는 방법도 실험했습니다. 문자열 처리뿐만 아니라 의미론적 주장도 수행할 수 있으므로 이는 유망한 접근 방식입니다. 여기서의 절충점은 비용도 발생하고 LLM으로 인해 발생하는 확률 오류의 위험이 쌓인다는 것입니다.
이 애플리케이션을 실행하려면 유효한 OpenAI API 키가 있어야 합니다.
./gradlew bootRun
실행하여 애플리케이션을 시작합니다.http://localhost:8080
방문하세요.