中国語 | 英語
Qwen-Agent は、Qwen の指示に従って、ツールの使用法、計画、メモリ機能に基づいて LLM アプリケーションを開発するためのフレームワークです。ブラウザ アシスタント、コード インタープリタ、カスタム アシスタントなどのサンプル アプリケーションも付属しています。
2024 年 9 月 18 日: Qwen2.5-Math のツール統合推論機能を紹介する Qwen2.5-Math デモを追加しました。注: Python Executor はサンドボックス化されておらず、実稼働での使用ではなくローカル テストのみを目的としています。
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 を使用したツール統合推論。
あるいは、ソースから最新の開発バージョンをインストールすることもできます。
git clone 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 は、LLM ( class BaseChatModel
から継承し、関数呼び出しを伴う) やツール ( class BaseTool
から継承) などのアトミック コンポーネントと、エージェント ( class Agent
から派生) のような高レベル コンポーネントを提供します。
次の例は、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):# 「説明」はエージェントにこのツールの機能を伝えます。説明 = 'AIペイント (画像生成) サービスを実行し、テキストの説明を入力し、テキスト情報に基づいて描画された画像の URL を返します。'# `parameters` は、ツールにどのような入力パラメータがあるかをエージェントに伝えます。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(prompt)return 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-チャット',# 'モデルサーバー': 'http://localhost:8000/v1', #base_url, api_base とも呼ばれます# 'api_key': 'EMPTY',# (オプション) 生成のための LLM ハイパーパラメータ:'generate_cfg': {'top_p': 0.8} }# ステップ 3: エージェントを作成します。ここでは例として「アシスタント」エージェントを使用します。このエージェントは、ツールを使用したりファイルを読み取ることができます。system_instruction = ''あなたは役に立つアシスタントです。ユーザーのリクエストを受け取った後、次のことを行う必要があります。 - まず画像を描画し、画像の URL、- 次に、コード `request.get(image_url)` を実行して画像をダウンロードします。- そして最後に、指定されたドキュメントから画像操作を選択して画像を処理します。次を使用して画像を表示してください。 `plt.show()`.'''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` は code.files = ['./examples/resource/doc.pdf' を実行するための組み込みツールです] # ボットに読み取れる PDF ファイルを与えます。bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# ステップ 4: エージェントをチャットボットとして実行します。messages = [] # これにより、チャット履歴が保存されます。while True:# たとえば、次のクエリを入力します。 "犬を描いて 90 度回転させます".query = input('user query: ')# ユーザー クエリをチャット履歴に追加します。messages.append({'role': 'user', 'content': query})response = []for bot.run(messages=messages):# ストリーミング出力.print('bot response:')pprint.pprint(response, indent=2)#ボットの応答をチャットhistory.messages.extend(response)に追加します。
class Assistant
などの組み込みエージェント実装を使用するだけでなく、 class Agent
から継承して独自のエージェント実装を開発することもできます。その他の使用例については、サンプル ディレクトリを参照してください。
はい。 LLM クラスは関数呼び出しを提供します。さらに、FnCallAgent や ReActChat など、一部の Agent クラスも関数呼び出し機能に基づいて構築されています。
私たちは、超長い文書に対する質問応答を行うための、高速な RAG ソリューションと、高価ではあるが競争力のあるエージェントをリリースしました。彼らは、より効率的でありながら、2 つの困難なベンチマークでネイティブのロングコンテキスト モデルを上回るパフォーマンスを達成し、1M トークンのコンテキストを含むシングルニードルの「干し草の山の針」圧力テストで完璧にパフォーマンスを発揮しました。技術的な詳細についてはブログを参照してください。
BrowserQwen は、Qwen-Agent に基づいて構築されたブラウザ アシスタントです。詳細については、ドキュメントを参照してください。
コード インタープリターはサンドボックス化されておらず、独自の環境でコードを実行します。 Qwen に危険なタスクの実行を依頼しないでください。また、運用目的でコード インタプリタを直接使用しないでください。