クイックスタート
プロジェクト設定
Section titled “プロジェクト設定”-
プロジェクトを作成し、npm を初期化します。これは一度だけで構いません。
Terminal window mkdir my_projectcd my_projectnpm init -y -
Agents SDK をインストールします。
Terminal window npm install @openai/agents -
OpenAI API キーを設定します。キーがない場合は、こちらの手順に従って OpenAI API キーを作成してください。
Terminal window export OPENAI_API_KEY=sk-...
最初のエージェントの作成
Section titled “最初のエージェントの作成”エージェントは instructions と name で定義します。
import { Agent } from '@openai/agents';
const agent = new Agent({ name: 'History Tutor', instructions: 'You provide assistance with historical queries. Explain important events and context clearly.',});
最初のエージェントの実行
Section titled “最初のエージェントの実行”run
メソッドを使用してエージェントを実行できます。開始したいエージェントと渡したい入力を両方指定して実行します。
これにより、最終出力とその実行中に実行されたアクションを含む result が返されます。
import { Agent, run } from '@openai/agents';
const agent = new Agent({ name: 'History Tutor', instructions: 'You provide assistance with historical queries. Explain important events and context clearly.',});
const result = await run(agent, 'When did sharks first appear?');
console.log(result.finalOutput);
エージェントにツールを提供
Section titled “エージェントにツールを提供”エージェントに情報を検索したりアクションを実行したりするためのツールを与えることができます。
import { Agent, tool } from '@openai/agents';
const historyFunFact = tool({ // The name of the tool will be used by the agent to tell what tool to use. name: 'history_fun_fact', // The description is used to describe **when** to use the tool by telling it **what** it does. description: 'Give a fun fact about a historical event', execute: async () => { // The output will be returned back to the Agent to use return 'Sharks are older than trees.'; },});
const agent = new Agent({ name: 'History Tutor', instructions: 'You provide assistance with historical queries. Explain important events and context clearly.', // Adding the tool to the agent tools: [historyFunFact],});
さらなるエージェントの追加
Section titled “さらなるエージェントの追加”追加のエージェントを同様に定義して、問題をより小さな部分に分割し、各エージェントが現在のタスクに集中できるようにします。また、エージェントごとにモデルを指定することで、異なる問題に対して異なるモデルを使用できます。
const historyTutorAgent = new Agent({ name: 'History Tutor', instructions: 'You provide assistance with historical queries. Explain important events and context clearly.',});
const mathTutorAgent = new Agent({ name: 'Math Tutor', instructions: 'You provide help with math problems. Explain your reasoning at each step and include examples',});
ハンドオフの定義
Section titled “ハンドオフの定義”複数のエージェントをオーケストレーションするために、エージェントに handoffs
を定義できます。これにより、実行中に自動的に次のエージェントへ会話を引き継げるようになります。
// Using the Agent.create method to ensures type safety for the final outputconst triageAgent = Agent.create({ name: 'Triage Agent', instructions: "You determine which agent to use based on the user's homework question", handoffs: [historyTutorAgent, mathTutorAgent],});
実行後、result の finalAgent
プロパティを確認すると、最終応答を生成したエージェントがわかります。
エージェントオーケストレーションの実行
Section titled “エージェントオーケストレーションの実行”Runner は各エージェントの実行、ハンドオフ、ツール実行を処理します。
import { run } from '@openai/agents';
async function main() { const result = await run(triageAgent, 'What is the capital of France?'); console.log(result.finalOutput);}
main().catch((err) => console.error(err));
すべてを一つにまとめた完全な例を示します。index.js
に貼り付けて実行してください。
import { Agent, run } from '@openai/agents';
const historyTutorAgent = new Agent({ name: 'History Tutor', instructions: 'You provide assistance with historical queries. Explain important events and context clearly.',});
const mathTutorAgent = new Agent({ name: 'Math Tutor', instructions: 'You provide help with math problems. Explain your reasoning at each step and include examples',});
const triageAgent = new Agent({ name: 'Triage Agent', instructions: "You determine which agent to use based on the user's homework question", handoffs: [historyTutorAgent, mathTutorAgent],});
async function main() { const result = await run(triageAgent, 'What is the capital of France?'); console.log(result.finalOutput);}
main().catch((err) => console.error(err));
トレースの閲覧
Section titled “トレースの閲覧”Agents SDK はトレースを自動生成します。これにより、エージェントがどのように動作したか、どのツールを呼び出したか、どのエージェントにハンドオフしたかを確認できます。
エージェントの実行内容を確認するには、OpenAI ダッシュボードの Trace ビューアにアクセスしてください。
次のステップ
Section titled “次のステップ”より複雑なエージェントフローの構築方法を学びましょう: