외부 도구 호출
도구 호출은 이전에는 존재하지 않았던 진정한 'LLM 네이티브' 상호작용 모드 중 하나입니다. 이는 새로운 지식을 습득하고 실제 작업을 수행할 때 '생각하는' LLM에게 '행동'할 수 있는 능력을 부여합니다. 이는 모든 에이전트 애플리케이션에서 매우 중요한 부분입니다.
오픈 소스 LLM은 점점 더 도구 사용에 능숙해지고 있습니다. 이제 Llama 3 모델을 통해 노트북에서 실행되는 8b급 LLM에서 안정적인 도구 호출 성능을 확보할 수 있게 되었습니다!
이 튜토리얼에서는 로컬 LLM이 로컬 컴퓨터에서 코드를 실행하고 데이터를 조작할 수 있는 간단한 Python 프로그램을 보여드리겠습니다!
전제 조건
공개 URL을 통해 LLM 서비스를 제공하려면 Gaia 노드가 준비되어 있어야 합니다. 다음을 수행할 수 있습니다.
- 노드를 실행하세요. Llama-3-Groq 모델 또는 Mistral-7B-v0.3 Instruct 모델에 대한 Gaia 노드를 시작해야 합니다. 그런 다음 도구 호출 앱에서 노드의 API URL 엔드포인트와 모델 이름을 사용할 수 있습니다.
- 퍼블릭 노드 사용
이 튜토리얼에서는 함수 호출을 지원하는 퍼블릭 라마3 노드를 사용하겠습니다.
속성 | 가치 |
---|---|
API 엔드포인트 URL | https://llamatool.us.gaianet.network/v1 |
모델 이름 | llama |
API 키 | 가이아 |
데모 에이전트 실행
에이전트 앱은 Python으로 작성되었습니다. 이 앱은 LLM이 도구를 사용하여 SQL 데이터베이스를 작동하는 방법을 보여줍니다. 이 경우 인메모리 SQLite 데이터베이스를 시작하고 작동합니다. 데이터베이스에는 할 일 항목 목록이 저장됩니다.
코드를 다운로드하고 다음과 같이 Python 종속성을 설치합니다.
git clone https://github.com/second-state/llm_todo
cd llm_todo
pip install -r requirements.txt
방금 설정한 API 서버와 모델 이름에 대한 환경 변수를 설정합니다.
export OPENAI_MODEL_NAME="llama"
export OPENAI_BASE_URL= "https://llamatool.us.gaianet.network/v1"
실행 main.py
애플리케이션을 클릭하고 명령줄 채팅 인터페이스를 불러옵니다.
python main.py
에이전트 사용
이제 LLM에 작업을 수행하도록 요청할 수 있습니다. 예를 들어 다음과 같이 말할 수 있습니다.
사용자:
마케팅 팀과 회의를 하러 가는데 적을 수 있게 도와주세요.
LLM은 데이터베이스에 레코드를 삽입해야 한다는 것을 이해하고 도구 호출 응답을 JSON으로 반환합니다.
Assistant:
<tool_call>
{"id": 0, "name": "create_task", "arguments": {"task": "have a meeting with the marketing team"}}
</tool_call>
상담원 앱(예 main.py
)는 도구 호출을 실행합니다. create_task
를 JSON 응답으로 반환하고, 결과를 role 도구
. 에서 자동으로 수행되므로 여기서 아무것도 할 필요가 없습니다. main.py
. 에이전트 앱이 도구 호출을 실행하면 SQLite 데이터베이스가 업데이트됩니다.
Tool:
[{'result': 'ok'}]
LLM이 실행 결과를 수신한 다음 응답합니다.
어시스턴트:
작업 목록에 "마케팅 팀과 회의하기"를 추가했습니다. 또 하고 싶은 일이 있나요?
대화를 계속할 수 있습니다.
도구 호출의 작동 방식에 대해 자세히 알아보려면 이 문서를 참조하세요.
견고하게 만들기
LLM 애플리케이션의 주요 문제 중 하나는 응답이 자주 불안정하다는 점입니다. 예를 들어
LLM이 사용자의 쿼리를 처리하지 못하는 잘못된 도구 호출을 생성하는 경우,
를 사용하면 각 도구 호출 함수에 대한 설명을 세분화하고 최적화할 수 있습니다. LLM은 이러한 설명을 기반으로 도구를 선택하므로 일반적인 사용자 쿼리와 일치하는 방식으로 도구를 만드는 것이 중요합니다.
LLM이 존재하지 않는 함수 이름이나 잘못된 매개 변수를 사용하여 도구 호출을 생성하는 경우,
에이전트 앱은 이 문제를 식별하고 LLM에 새 응답을 생성하라는 메시지를 표시해야 합니다.
도구 호출은 진화하는 에이전트 LLM 애플리케이션 분야의 기본 기능입니다. 여러분의 혁신적인 아이디어를 기다리고 있습니다!