이 저장소는 Llama Stack 위에 구축된 애플리케이션의 예를 보여줍니다. Llama 3.1을 시작하면 다음 기능을 갖춘 에이전트 애플리케이션을 구축할 수 있습니다.
작업을 세분화하고 다단계 추론을 수행합니다.
도구를 사용하여 일부 작업 수행
내장형: 모델에는 검색이나 코드 해석기와 같은 도구에 대한 지식이 내장되어 있습니다.
제로샷: 모델은 이전에 볼 수 없었던 상황 내 도구 정의를 사용하여 도구를 호출하는 방법을 학습할 수 있습니다.
Llama Guard와 같은 모델을 사용하여 시스템 수준의 안전 보호 기능을 제공합니다.
메모
Llama Stack API는 계속 발전하고 있으며 변경될 수 있습니다. 자유롭게 구축하고 실험해 보세요. 하지만 아직은 안정성에 의존하지 마세요!
에이전트 앱에는 몇 가지 구성 요소가 필요합니다.
기본 Llama 시리즈 모델에 대해 추론을 실행하는 기능
Llama Guard 시리즈 모델을 사용하여 안전 점검을 실행하는 기능
코드 실행 환경을 포함한 도구를 실행하고 모델의 다단계 추론 프로세스를 사용하여 루프하는 기능
이러한 모든 구성 요소는 이제 단일 Llama 스택 배포판에서 제공됩니다. Llama Stack은 Generative AI 애플리케이션을 더욱 원활하게 구축하는 데 필요한 이러한 구성 요소와 기타 여러 구성 요소를 정의하고 표준화합니다. 그런 다음 이러한 API의 다양한 구현이 Llama 스택 배포를 통해 함께 조립됩니다.
Llama Stack 앱을 시작하려면 다음을 수행해야 합니다.
필수 구성 요소 설치
Llama Stack 서버 시작
클라이언트 에이전트 앱을 Llama Stack 서버에 연결
일단 시작되면 에이전트 앱이 이 서버의 URL(예: http://localhost:5000
)을 가리킬 수 있습니다.
파이썬 패키지
격리된 Conda Python 환경을 만드는 것이 좋습니다.
# 가상 환경 생성 및 활성화ENV=stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>conda activate $ENV# 설치 종속성pip install -r 요구 사항.txt
그러면 (1) Llama Stack 서버 구축 및 시작 (2) 클라이언트 앱을 Llama Stack 서버에 연결하는 데 필요한 모든 종속성이 설치됩니다.
Llama Stack 배포를 설정하고 API 엔드포인트를 제공하기 위한 서버를 실행하려면 llama-stack 저장소의 개발자 가이드를 참조하세요. 클라이언트 앱을 구축하려면 서버 엔드포인트가 있어야 합니다.
서버가 시작되면 출력이 표시되어야 합니다.
... Serving POST /agentic_system/session/delete Serving POST /agentic_system/session/get Serving POST /agentic_system/step/get Serving POST /agentic_system/turn/get Serving GET /telemetry/get_trace Serving POST /telemetry/log_event Listening on :::5000 INFO: Started server process [587053] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://[::]:5000 (Press CTRL+C to quit)
우리는 Stack 서버와 상호 작용하기 위한 샘플 데모 스크립트를 구축했습니다.
서버가 실행 중인 상태에서 간단한 에이전트를 테스트해 볼 수 있습니다.
python -m examples.agents.hello localhost 5000
다음 형식의 출력이 표시됩니다.
> created agents with agent_id=d050201b-0ca1-4abd-8eee-3cba2b8c0fbc User> Hello shield_call> No Violation inference> How can I assist you today? shield_call> No Violation User> Which players played in the winning team of the NBA western conference semifinals of 2024, please use tools shield_call> No Violation inference> brave_search.call(query="NBA Western Conference Semifinals 2024 winning team players") tool_execution> Tool:brave_search Args:{'query': 'NBA Western Conference Semifinals 2024 winning team players'} tool_execution> Tool:brave_search Response:{"query": "NBA Western Conference Semifinals 2024 winning team players", "top_k": [{"title": "2024 NBA Western Conference Semifinals - Mavericks vs. Thunder | Basketball-Reference.com", "url": "https://www.basketball-reference.com/playoffs/2024-nba-western-conference-semifinals-mavericks-vs-thunder.html", "description": "Summary and statistics for the <strong>2024</strong> <strong>NBA</strong> <strong>Western</strong> <strong>Conference</strong> <strong>Semifinals</strong> - Mavericks vs. Thunder", "type": "search_result"}, {"title": "2024 NBA playoffs - Wikipedia", "url": "https://en.wikipedia.org/wiki/2024_NBA_playoffs", "description": "Aged 20 years and 96 days old, ... youngest <strong>player</strong> <strong>in</strong> <strong>NBA</strong> history to record 10+ points and 15+ rebounds in a playoff game, coming during game 6 of the Maverick's <strong>Western</strong> <strong>Conference</strong> <strong>Semifinal</strong> <strong>win</strong> against the Thunder on May 18. The Timberwolves overcame a 20u2013point deficit to <strong>win</strong> game 7 against the Nuggets, the largest game 7 comeback in <strong>NBA</strong> playoffs history. With the defending champion Nuggets losing to the Minnesota Timberwolves, the <strong>2024</strong> playoffs marked ...", "type": "search_result"}, {"title": "2024 NBA Playoffs | Official Bracket, Schedule and Series Matchups", "url": "https://www.nba.com/playoffs/2024", "description": "The official site of the <strong>2024</strong> <strong>NBA</strong> Playoffs. Latest news, schedules, matchups, highlights, bracket and more.", "type": "search_result"}]} shield_call> No Violation inference> The players who played in the winning team of the NBA Western Conference Semifinals of 2024 are not specified in the search results provided. However, the search results suggest that the Mavericks played against the Thunder in the Western Conference Semifinals, and the Mavericks won the series. shield_call> No Violation
이제 스택 서버가 설정되었으므로 다음 작업은 에이전트 API를 사용하여 에이전트 앱을 실행하는 것입니다.
우리는 시작하는 데 도움이 되는 샘플 스크립트, 노트북 및 UI 채팅 인터페이스(Gradio! 사용)를 구축했습니다.
앱(로컬)을 시작하고 다음 명령을 실행하여 앱과 상호작용합니다.
파이썬패스=. 파이썬 예제/agent_store/app.py localhost 5000
그러면 mesop 앱이 시작되고 localhost:7860
으로 이동하여 채팅 인터페이스를 사용할 수 있습니다.
선택적으로 맞춤 도구에 대한 API 키를 설정할 수 있습니다.
WolframAlpha: WOLFRAM_ALPHA_API_KEY
환경 변수에 저장
Brave Search: BRAVE_SEARCH_API_KEY
환경 변수에 저장
Agent Store README.md에서 다른 상호 작용 방법을 볼 수 있습니다.
참고: 스택 서버가 아직 실행 중인지 확인하세요.
cd <path-to-llama-agentic-system>conda activate $ENVllama 스택 run <name> # 아직 시작하지 않은 경우PYTHONPATH=. python -m example.agents.rag_with_memory_bank localhost 5000
다음 형식의 stdout 출력이 표시됩니다.
환경: 아이파이썬 도구: Brave_search, Wolfram_alpha, Photogen 절단 지식 날짜: 2023년 12월 오늘 날짜: 2024년 7월 23일 User> 스위스 여행을 계획 중인데 꼭 가봐야 할 상위 3곳은 어디인가요?최종 Llama Guard 응답 Shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=False 위반_type=없음 위반_return_message=None PromptGuardShield를 실행하고 점수를 얻었습니다: 임베디드: 0.9999765157699585, 악성: 1.1110752893728204e-05 StepType.shield_call> 위반 없음 role='user' content='스위스 여행을 계획하고 있는데, 가봐야 할 상위 3곳은 어디입니까?'StepType.inference> 스위스는 풍부한 역사, 문화, 자연의 아름다움을 지닌 아름다운 나라입니다. 여행 일정에 추가할 수 있는 꼭 방문해야 할 세 곳은 다음과 같습니다. ....
팁 선택적으로 스크립트에서
--disable-safety
수행하여 안전 보호막이 항상 실행되는 것을 방지할 수 있습니다.
궁금한 점이 있으면 언제든지 문의하세요.
Llama Stack 서버에 연결하기 위한 클라이언트 SDK를 확인하세요. Python, Node, Swift 및 Kotlin 프로그래밍 언어 중에서 선택하여 애플리케이션을 빠르게 구축할 수 있습니다.
메모
venv
사용하여 앱을 실행할 수 있지만 배포판을 설치하려면 conda가 필요합니다.
# 가상 환경 생성 및 활성화python3 -m venv venvsource venv/bin/activate
# 가상 환경 생성 및 활성화python -m venv venv venvScriptsactivate # 명령 프롬프트의 경우# 또는.venvScriptsActivate.ps1 # PowerShell의 경우# orsource venvScriptsactivate # Git의 경우
이후 지침(종속성 설치를 위한 pip install -r requirements.txt
포함)은 동일하게 유지됩니다.