🤖

MulmoCastにimage agentを追加する

に公開

MulmoCastにimage agentを追加する

MulmoCastでは、現在、openaiとgoogleのtext2image のapiをサポートしています。
MulmoCastはGraphAIで動いているのでGraphAIのimage agent を追加することで、機能を拡張することが可能です(現在のところ、リポジトリを fork してコードを追加する必要があります)。

GraphAIのimage agentを作成する

src/agents/image_foo_agent.tsを参考に独自のimage_agentを作成する

agentinputspromptstring型として受け取り、{ buffer } の形式で PNG 画像ファイルを返すように実装します。

画像の保存処理は agent 側で行う必要はありません。画像のキャッシュや保存は mulmo 側で処理されます。

export const newImageAgent: AgentFunction = async ({ namedInputs }) => {
  const { prompt } = namedInputs;

  ...
  ...
    
  return { buffer: Buffer.from(image_base64, "base64") };
  
};

作成した関数は、agentInfoWrapperか、もしくは通常の方法でagent化します。

imageAgents に登録する

以下のいずれかの方法で、imageAgents に agent を追加します:

  • src/actions/images.tsにあるimageAgentsに直接追加する
    • 追加するとGraphAIのインスタンスに渡すAgentとして登録されます。
  • または、generateImages 関数や images 関数の options 引数として imageAgents を渡す
    • ライブラリとしてMulmoCastを使う場合は、この方法で外から追加できます。

このときのagent名は、この後の設定でのagentNameやdictonaryのkeyとなります。

provider2agent に情報を追加する

src/utils/provider2agent.tsに、作成したimage agentの情報を追加します。

export const provider2ImageAgent = {
  openai: {
    agentName: "imageOpenaiAgent",
    defaultModel: "gpt-image-1",
    models: ["dall-e-3", "gpt-image-1"],
  },
  yourImageAgentProvider: {
    agentName: "newImageAgent",
    defaultModel: "image1",
    models: ["image1", "image2"],
  },
};  

keyはAgent名と一致させる必要があります。graphaiのagentsにわたすときのkeyです。
defaultModelやmodelsはschemaのvalidationで使われます。

追加方法は既存の他のimage agentの定義を参考にしてください。

環境変数の設定

agentの動作に必要な環境変数を追加します。

src/utils/utils.ts内のsettings2GraphAIConfig関数にあるConfigDataDictionaryに設定を追記してください。

  const config: ConfigDataDictionary<DefaultConfigData> = {
    newImageAgent: {
      apiKey: getKey("IMAGE", "NEW_IMAGE_API_KEY"),
    },

keyはprovider2ImageAgentのagentNameと一致させる必要があります。
環境変数または設定経由でgraphai configからagentconfigに値を渡すことができます。

agentのconfigにapiKeyとして値が渡されます。
IMAGE_NEW_IMAGE_API_KEY もしくは、NEW_IMAGE_API_KEYの環境変数で設定してください。

API キーなどの機密情報はこの方法で渡してください。こちらも他のimage agentを参考にすると実装しやすいです。

mulmoScriptにproviderとして指定する

scriptsを参考に、imageParamsを設定してください。

以上で、image agentを追加して利用することができます。

imagesの処理でmovieを作成できますが、これもほぼ同じですので興味があればソースを参考にすれば追加可能です。

シンギュラリティ・ソサエティ

Discussion