🤖

GraphAIの設定値をGraphAIからAgentに渡す

2025/01/01に公開

Agentの設定について

Agentには動作のために設定値が必要な場合があります。代表的な例として、OpenAIのLLMを動作させるためのAPIキーが必要となります。

環境変数を使った設定

  • サーバやバッチ処理の場合
    環境変数を使用して、Agent内部で利用しているLLMライブラリが必要とするAPIキーなどの設定値を渡すのが推奨されます。

  • ブラウザでの利用の場合
    GraphAIはブラウザ上でもAgentを動作させることが可能ですが、この場合、process.envでの環境変数を使用できません。そのため、以下の方法が用意されています:

    1. paramsで直接渡す方法 (非推奨)
      設定値をAgentのparamsに直接指定することが可能です。
    2. GraphAIコンストラクタから**configを通じて渡す方法(推奨)**
      設定値はconfigを使用して渡すのが適切です。

configを使った設定の仕組み

  • configはGraphAIのコンストラクタを通じてAgentに設定値を渡す仕組みがあります。
  • 仕様変更の影響でGraphAIのバージョン 0.6.14 以降の利用を推奨します。

configの主な特徴

  • Agentごとの設定
    各Agentに個別の設定値を渡すことが可能です。
    config: {[agentId]: { someKey: someValue}}とすると、そのagentIdのAgentだけに値を渡すことが可能です。
  • Global設定
    globalを指定することで、すべてのAgentに共通の設定値を渡すことができます。
    config: {global: { someKey: someValue}}
  • Global[agentId]は同時に利用が可能です
  • [agentId]で個別に指定できるので、apiKeyのような名前をそれぞれのagentで使うことができ、名前の衝突がありません。
  • Dynamic AgentやNested Graphに対応
    動的に決定されるAgentやネストされたグラフにも対応しています。

globalでサービス共通のuserIdを全てのAgentに渡し、testAgentだけにapiKeyを渡しています。
userIdは他のAgentでも同じように取得できます。

import GraphAI from 'graphai';

const graphai = new GraphAI(graph, agent, {
  config: {
    global: {
      userId: 123,
    },
    testAgent: {
      apiKey: "someCredentialValue"
    },
    otherAgent: {
      apiKey: "someCredentialValue"
    },
  },
});

// agent
const testAgent: AgentFunction = async (namedInputs, config) => {
  const { userId, apiKey } = config;
  console.log(`User ID: ${userId}`); // 123
  ///
};
シンギュラリティ・ソサエティ

Discussion