コンテンツにスキップ

クイックスタート

  1. プロジェクトを作成して npm を初期化します。これは一度だけ実行すれば十分です

    Terminal window
    mkdir my_project
    cd my_project
    npm init -y
  2. Agents SDK をインストールします

    Terminal window
    npm install @openai/agents zod@3
  3. OpenAI API key を設定します。お持ちでない場合は、these instructions に従って OpenAI API key を作成してください

    Terminal window
    export OPENAI_API_KEY=sk-...

    あるいは setDefaultOpenAIKey('<api key>') を呼び出してプログラム上でキーを設定し、トレーシング用に setTracingExportApiKey('<api key>') を使用できます。 詳細は SDK の設定 を参照してください

はじめてのエージェントの作成

Section titled “はじめてのエージェントの作成”

エージェントは instructions と名前で定義します

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 メソッドでエージェントを実行できます。開始したいエージェントと、渡したい入力の両方を渡して実行をトリガーします

これにより、その実行中に行われた最終出力と任意のアクションを含む実行結果が返されます

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);

情報の参照やアクションの実行に使えるツールをエージェントに与えられます

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',
// This tool takes no parameters, so we provide an empty Zod Object.
parameters: z.object({}),
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',
});

複数のエージェント間でオーケストレーションするために、エージェントに handoffs を定義できます。これにより、エージェントは会話を次のエージェントへ引き継げるようになります。これは実行の過程で自動的に行われます

// Using the Agent.create method to ensures type safety for the final output
const triageAgent = Agent.create({
name: 'Triage Agent',
instructions:
"You determine which agent to use based on the user's homework question",
handoffs: [historyTutorAgent, mathTutorAgent],
});

実行後、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));

すべてを 1 つの完全な例としてまとめましょう。これを 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));

Agents SDK はトレースを自動的に生成します。これにより、エージェントの動作、呼び出されたツール、どのエージェントへハンドオフしたかを確認できます

エージェント実行中に何が起こったかを確認するには、Trace viewer in the OpenAI Dashboard に移動します

より複雑なエージェントフローの作り方を学びましょう: