Qwen-Agentの最高のオープンソースモデルで自律型エージェントを解き放つ
Qwen-Agentのオープンソースモデルの力を探り、関数呼び出しとカスタムエージェントの作成を通じて自律型エージェントの可能性を引き出す方法を学びましょう。実世界のアプリケーションにおけるモデルパフォーマンスに対する量子化の影響を発見してください。
2025年2月14日

自律型エージェントの力を解き放つ Qwen-Agent は、最高の公開重み付きモデルを活用する先端的なオープンソースフレームワークです。関数呼び出しとエージェントベースのワークフローを滑らかに統合して、現実世界と対話し、ユーザーのニーズに適応する知的アプリケーションを構築する方法を発見してください。
最高のオープンウェイトモデルでオートノマスエージェントを構築する
関数呼び出しとエージェント:違いの理解
Qwen エージェントの使い始め:関数呼び出しとエージェントの使用
大規模言語モデルのパフォーマンスに対する量子化の影響
最高のオープンウェイトモデルでオートノマスエージェントを構築する
最高のオープンウェイトモデルでオートノマスエージェントを構築する
Quen 2モデルは、アリババの最新で最高のオープンソースの言語モデルで、幅広い範囲のタスクで印象的な機能を提供しています。これらのモデルは5億から720億パラメーターの範囲で、より大きなモデルは最大128,000トークンをサポートしており、GPT-3の8,000トークンの制限を大幅に改善しています。
Quen 2の主な特徴の1つは、コーディングや数学の強い性能と、長文理解の能力です。これは現実世界のアプリケーションにとって重要です。さらに、モデルは中東や東南アジアの言語にも焦点を当てており、他のモデルが主に西洋言語に偏っているのとは対照的です。
Quen 2の力を活用するには、Quen Agentフレームワークを使用します。これにより、組み込みのブラウザアシスタント、コードインタプリター、カスタムアシスタントの作成が可能になります。これにより、タスクに応じて行動を計画、実行、適応できる自律型エージェントを構築できます。
このセクションでは、Quen Agentを使ってカスタムの画像生成エージェントを作成する方法を探ります。このエージェントは、ユーザーの入力に基づいて画像を生成し、生成された画像をダウンロードし、問題が発生した場合は自身のコードを更新することができます。Quen 2の強力な言語理解と、Quen Agentの計画および実行機能を組み合わせることで、幅広いタスクに対応できる本当に自律的で能力のあるエージェントを作成できます。
関数呼び出しとエージェント:違いの理解
関数呼び出しとエージェント:違いの理解
関数呼び出しとエージェントは、大規模言語モデル(LLM)の世界では2つの異なる概念です。2つの違いを簡潔に説明します。
関数呼び出し(ツールの使用):
- 関数呼び出し、またはツールの使用により、LLMは外部APIやファンクションにアクセスして外部世界と対話できます。
- LLMはユーザーの入力に基づいて使用する関数を決定し、関数に必要な入力を生成し、結果をユーザーに返します。
- ただし、LLM自体は関数呼び出しを実行できません。ユーザーや別のシステムが実際の関数呼び出しを行い、その結果をLLMに返す必要があります。
エージェント:
- エージェントは、関数呼び出しと同様にツールにアクセスできる、より高度なLLMのインスタンスです。
- エージェントは計画を立て、タスクをサブゴールに分解し、利用可能なツールを使って行動を実行することができます。
- エージェントには短期メモリと長期メモリの両方にアクセスできるため、進捗状況を追跡し、次のステップを適切に計画できます。
- エージェントは、複雑なタスクを自律的に実行できるようにするため、LLMを実用的なアプリケーションに役立てるのに不可欠です。
要約すると、関数呼び出しはLLMが関数に必要な入力を生成するだけの限定的な相互作用ですが、エージェントには目的を達成するために行動を計画、実行、適応する能力があります。
Qwen エージェントの使い始め:関数呼び出しとエージェントの使用
Qwen エージェントの使い始め:関数呼び出しとエージェントの使用
Qwen エージェントを使い始めるには、72 億バージョンのQwen 2を使い、AMAでローカルで実行します。外部APIも使えますが、Qwen Agentを使うには2つのオプションがあります。
- pipを使ってパッケージをインストールする
- 最新の開発バージョンを使う場合は、リポジトリをクローンしてローカルでインストールする
私はAMAでローカルで実行します。まず、AMAサーバーを起動し、olama Run Qwen 272 billion
コマンドを使います。これにより、AMAとモデルがダウンロードされます。インターネット速度によってはしばらく時間がかかります。
次に、condaを使ってバーチャル環境を作成し、アクティブ化します。
conda create -n qwen python=3.10
conda activate qwen
そして、pipを使ってQwen Agentパッケージをインストールします。
pip install qwen-agent
最初に関数呼び出しを試してみましょう。モデルは使用する関数を選択し、入力を決定し、Pythonインタープリターに渡す必要があります。インタープリターが関数を実行し、応答を取得して、LLMに返します。
現在の天気を取得する関数呼び出しの例は次のとおりです。
# LLMインスタンスの作成
llm = QwenLLM(base_api="http://localhost:8000/v1", model_name="qwen-2-72b", version="v1")
# ユーザーメッセージ
user_message = "What's the current weather like in Paris?"
# 関数の定義
function_call = {
"description": "Get the current weather for a given location",
"function": "get_weather",
"arguments": {
"location": "Paris",
"unit": "celsius"
}
}
# LLMを呼び出して関数を実行
response = llm.call_with_function(user_message, [function_call])
print(response)
これにより、パリの現在の天気情報が生成され、LLMに返されます。
Qwen Agentの使用例を見てみましょう。画像を生成してローカルフォルダにダウンロードするカスタムエージェントを作成します。エージェントは画像生成用のカスタムツールとコードインタープリターを使用します。
from qwen_agent import Assistant, CodeInterpreter, CustomTool
# カスタムの画像生成ツールを定義
class MyImageGeneration(CustomTool):
def __init__(self):
self.description = "Generate images based on user input using the Pollinations.AI API."
def run(self, args):
# APIを使って画像を生成
image_url = generate_image(args["prompt"])
# 画像をローカルフォルダにダウンロード
download_image(image_url, "images")
return f"Image generated and saved to 'images' folder."
# エージェントの作成
agent = Assistant(
llm=QwenLLM(base_api="http://localhost:8000/v1", model_name="qwen-2-72b", version="v1"),
tools=[MyImageGeneration(), CodeInterpreter()]
)
# エージェントに画像の生成を依頼
agent.run("Create an image of a llama wearing sunglasses.")
このエージェントは、カスタムの画像生成ツールを使って画像を作成し、「images」フォルダにダウンロードし、結果を返します。
最後に、Qwenモデルの量子化がパフォーマンスに与える影響について見ていきます。Qwenチームは、MML、C-Evolve、I-Evolveメトリクスについて、さまざまな量子化レベルでの詳細な評価を行っています。
その結果、より大きなモデル(72 億)では、16ビットと8ビットの量子化の違いは大きくありませんが、4ビットの量子化ではパフォーマンスにより大きな影響が見られます。一方、より小さなモデル(0.5 億)では、違いがより顕著で、4ビットの量子化では平均スコアが5ポイント低下しています。
一般的に、本番環境での展開には8ビットまたは16ビットの量子化を使うことをお勧めします。4ビットの量子化は、特に小さなモデルでパフォーマンスに大きな影響を与える可能性があります。
FAQ
FAQ