はじめに
この記事では、OpenAI Agents SDK(TypeScript版)を使ったエージェントの実装で、OpenAI の API を使わずローカルLLM を使った実装を試します。
OpenAI Agents SDK のアダプター
具体的には、OpenAI Agents SDK の以下のページで説明されているアダプターを使います。
●AI SDK で任意モデルを指定 | OpenAI Agents SDK
https://openai.github.io/openai-agents-js/ja/extensions/ai-sdk/
このページの上部に書いてあるとおり、記事執筆時点では「このアダプターはベータ版」とのことです。
Vercel AI SDK の OpenAI互換のプロバイダー
これと、Vercel AI SDK の以下のプロバイダーを組み合わせる形です。
●OpenAI Compatible Providers
https://ai-sdk.dev/providers/openai-compatible-providers
LM Studio を使ったローカルサーバー
さらに、LM Studio を使ったローカルサーバーも組み合わせます。
●OpenAI Compatible Providers: LM Studio
https://ai-sdk.dev/providers/openai-compatible-providers/lmstudio
直近でのローカルLLM + エージェント実装のお試し
今回やるような「ローカルLLM + エージェント実装」のお試しは直近でもやっていて、例えば以下の記事で書いた「Mastra」「Vercel の AI SDK」を使ったものがあります。
●「npx create-mastra」で作った Mastra のプロジェクト(ツールを使うエージェントの実装)と LM Studio でのローカルLLM(OpenAI互換API を扱うもの)を組み合わせる - Qiita
https://qiita.com/youtoy/items/09b953f2f1ef91cb6b6e
●Mastra と LM Studio を使ったローカルLLM(Agent.streamVNext()/generateVNext() を使う)【Node.js】 - Qiita
https://qiita.com/youtoy/items/b401bea6b0acd1ae17d6
●Vercel の AI SDK と LM Studio を使ったローカルLLM を組み合わせて試す【Node.js】 - Qiita
https://qiita.com/youtoy/items/7ec636b7086f107a9f5d
実際に試してみる
実際に試してみます。
LM Studio を使ったローカルサーバーの準備
まずは、LM Studio を使ったローカルサーバーを準備します。これについては、上で掲載していた記事の「LM Studio の準備」の部分をご参照ください。
LM Studio をローカルサーバーとして動作させ、そのローカルサーバーで OpenAI互換の API を使える状態( http://localhost:1234/v1 をベースURL として、API を呼び出せる状態)
にできれば OK です。
パッケージのインストール
次に、パッケージをインストールします。以下のコマンドで 3つのパッケージをインストールします。
npm i @openai/agents @openai/agents-extensions @ai-sdk/openai-compatible
具体的には、以下の 3つのパッケージです。
●@openai/agents - npm
https://www.npmjs.com/package/@openai/agents
●@openai/agents-extensions - npm
https://www.npmjs.com/package/@openai/agents-extensions
●@ai-sdk/openai-compatible - npm
https://www.npmjs.com/package/@ai-sdk/openai-compatible
コードの準備と処理の実行
あとはコードを準備して実行すれば OK です。
コードの内容
お試し用のコードは以下としました。
import { Agent, run } from "@openai/agents";
import { aisdk } from "@openai/agents-extensions";
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
const lmstudio = createOpenAICompatible({
name: "lmstudio",
baseURL: "http://localhost:1234/v1",
apiKey: "lm-studio",
});
const modelId = "jan-v1-4b";
const model = aisdk(lmstudio(modelId));
const agent = new Agent({
name: "Local Agent",
instructions: "日本語で簡潔かつ分かりやすく回答してください",
model,
});
async function main() {
const result = await run(agent, "あなたは何ができる?");
console.log(result.finalOutput);
}
main().catch((err) => {
console.error(err);
process.exit(1);
});
モデルは、直近のお試しで使ったものの 1つである「jan-v1-4b」を選びました。
処理の実行結果
処理の実行結果は、以下のとおりです。
今の状態だと「No API key provided for OpenAI tracing exporter. Exports will be skipped」というメッセージが出ています。
上記の tracing に関するメッセージについて
上記のメッセージは無視しても動作には影響しなそうですが、原因や対処法を調べてみました。
メッセージが出ている原因は以下が関係していそうでした。
●Tracing | OpenAI Agents SDK
https://openai.github.io/openai-agents-js/guides/tracing/?utm_source=chatgpt.com
対処法
上の公式の情報を見ると、対処法の 1つは以下の環境変数の設定があるようです。
export OPENAI_AGENTS_DISABLE_TRACING=1
上記の環境変数を設定し、再度、お試し用のコードを実行した結果、以下のようにエージェントの返答のみを得ることができました。