中文 | 영어
Qwen-Agent는 Qwen의 지침 따르기, 도구 사용, 계획 및 메모리 기능을 기반으로 LLM 응용 프로그램을 개발하기 위한 프레임워크입니다. 또한 브라우저 도우미, 코드 해석기 및 사용자 정의 도우미와 같은 예제 애플리케이션도 함께 제공됩니다.
2024년 9월 18일: Qwen2.5-Math의 도구 통합 추론 기능을 보여주기 위해 Qwen2.5-Math 데모를 추가했습니다. 참고: Python 실행 프로그램은 샌드박스 처리되지 않으며 프로덕션용이 아닌 로컬 테스트용으로만 사용됩니다.
PyPI에서 안정 버전을 설치합니다:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# 또는 최소 요구 사항을 위해 `pip install -U qwen-agent`를 사용하세요.# 이중 괄호 안에 지정된 선택적 요구 사항은 다음과 같습니다:# [gui ] Gradio 기반 GUI 지원용;# [rag] RAG 지원용;# [code_interpreter] 코드 해석기 지원용;# [python_executor] Qwen2.5-Math를 사용한 도구 통합 추론용.
또는 소스에서 최신 개발 버전을 설치할 수 있습니다.
자식 클론 https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# 또는 최소 요구 사항의 경우 `pip install -e ./`.
Alibaba Cloud의 DashScope에서 제공하는 모델 서비스를 사용하거나 오픈 소스 Qwen 모델을 사용하여 자체 모델 서비스를 배포하고 사용할 수 있습니다.
DashScope에서 제공하는 모델 서비스를 사용하기로 선택한 경우 환경 변수 DASHSCOPE_API_KEY
고유한 DashScope API 키로 설정했는지 확인하세요.
또는 자체 모델 서비스를 배포하고 사용하려는 경우 Qwen2의 README에 제공된 OpenAI 호환 API 서비스 배포 지침을 따르세요. 특히 처리량이 높은 GPU 배포에 대해서는 vLLM 섹션을 참조하고, 로컬 CPU(+GPU) 배포에 대해서는 Ollama 섹션을 참조하세요.
Qwen-Agent는 Agents( class Agent
에서 파생됨)와 같은 고급 구성 요소와 함께 LLM( class BaseChatModel
에서 상속되고 함수 호출과 함께 제공됨) 및 도구( class BaseTool
에서 상속됨)와 같은 원자 구성 요소를 제공합니다.
다음 예에서는 PDF 파일을 읽고 도구를 활용하고 사용자 정의 도구를 통합할 수 있는 에이전트를 생성하는 프로세스를 보여줍니다.
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool,register_tool# 1단계(선택 사항): `my_image_gen`이라는 사용자 정의 도구를 추가합니다.@register_tool('my_image_gen')class MyImageGen(BaseTool):# `description`은 에이전트에게 이 도구의 기능을 알려줍니다.description = 'AI 페인팅(이미지 생성) 서비스, 텍스트 설명 입력, 텍스트 정보를 기반으로 그려진 이미지 URL을 반환합니다.'# `parameters`는 에이전트에게 어떤 입력을 입력하는지 알려줍니다. 도구 매개변수 has.parameters = [{'name': 'prompt','type': 'string','description': '원하는 이미지 콘텐츠에 대한 자세한 설명(영어)','required': True}]def call(self, params: str, **kwargs) -> str:# `params`는 LLM 에이전트에 의해 생성된 인수입니다.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( 프롬프트) json5.dumps( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# 2단계: 사용 중인 LLM을 구성합니다.llm_cfg = {# 제공되는 모델 서비스를 사용합니다. DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# 여기에 'api_key'가 설정되지 않은 경우 `DASHSCOPE_API_KEY' 환경 변수를 사용합니다.# 사용 vLLM 또는 Ollama와 같은 OpenAI API와 호환되는 모델 서비스:# 'model': 'Qwen2-7B-Chat',# 'model_server': 'http://localhost:8000/v1', # base_url,라고도 함 as api_base# 'api_key': 'EMPTY',# (선택 사항) 생성을 위한 LLM 하이퍼파라미터:'generate_cfg': {'top_p': 0.8} }# 3단계: 에이전트를 생성합니다. 여기서는 도구를 사용하고 파일을 읽을 수 있는 `Assistant` 에이전트를 예로 사용합니다.system_instruction = '''당신은 유용한 도우미입니다. 사용자의 요청을 받은 후 다음을 수행해야 합니다.- 먼저 이미지를 그리고 가져옵니다. 이미지 URL - 그런 다음 'request.get(image_url)' 코드를 실행하여 이미지를 다운로드하고, 마지막으로 주어진 문서에서 이미지 작업을 선택하여 이미지를 처리합니다. `plt.show()`를 사용하여 이미지를 표시하세요.' ''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter`는 실행을 위한 내장 도구입니다. code.files = ['./examples/resource/doc.pdf'] # 봇에게 PDF 파일을 제공합니다. read.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# 4단계: 에이전트를 chatbot으로 실행합니다.messages = [] # 채팅 기록이 저장됩니다.while True:# 예를 들어 , "개를 그리고 90도 회전"이라는 쿼리를 입력합니다.query = input('user query: ')# 채팅 기록에 사용자 쿼리를 추가합니다.messages.append({'role': 'user', 'content ': query})response = []for response in bot.run(messages=messages):# 스트리밍 output.print('bot response:')pprint.pprint(response, indent=2)# 봇 응답을 채팅 기록.messages.extend(응답)
class Assistant
와 같은 내장 에이전트 구현을 사용하는 것 외에도 class Agent
에서 상속하여 고유한 에이전트 구현을 개발할 수도 있습니다. 더 많은 사용 예를 보려면 예제 디렉토리를 참조하세요.
예. LLM 클래스는 함수 호출을 제공합니다. 또한 일부 에이전트 클래스(예: FnCallAgent 및 ReActChat)도 함수 호출 기능을 기반으로 구축되었습니다.
우리는 매우 긴 문서에 대한 질문 답변을 수행할 수 있는 빠른 RAG 솔루션과 비싸지만 경쟁력 있는 에이전트를 출시했습니다. 그들은 더 효율적이면서 두 가지 까다로운 벤치마크에서 네이티브 긴 컨텍스트 모델을 능가했으며 1M 토큰 컨텍스트와 관련된 단일 바늘 "건초 더미 속의 바늘" 압력 테스트에서 완벽하게 수행되었습니다. 기술적인 세부 사항은 블로그를 참조하세요.
BrowserQwen은 Qwen-Agent를 기반으로 구축된 브라우저 도우미입니다. 자세한 내용은 해당 설명서를 참조하세요.
코드 해석기는 샌드박스 처리되지 않으며 사용자 환경에서 코드를 실행합니다. Qwen에게 위험한 작업을 수행하도록 요청하지 말고 코드 해석기를 생산 목적으로 직접 사용하지 마십시오.