跳到主要内容

Image Agent

ImageAgent 是一个专门负责生成图像的 Agent。它充当 ImageModel 的接口,处理输入数据以构建提示,然后请求图像生成服务来创建图像。

对于任何需要基于文本描述动态创建视觉内容的工作流来说,此 Agent 都是必不可少的。它利用 PromptBuilder 来构建提示,从而能够使用模板根据可变输入生成图像。

Image Agent

配置

ImageAgent 可以通过 TypeScript 以编程方式配置,也可以通过 YAML 以声明方式配置。两种方法都需要定义图像生成的指令,并可选择性地指定模型特定参数。

TypeScript 配置

要在 TypeScript 中创建 ImageAgent,请使用静态的 ImageAgent.from() 方法并为其提供 ImageAgentOptions

"ImageAgent 配置"

typescript
import { AIGNE, ImageAgent } from "@aigne/core";
import { OpenAI } from "@aigne/openai";

// 配置图像模型提供程序
const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

// 创建 ImageAgent 实例
const architectAgent = ImageAgent.from({
  name: "architect",
  description: "An agent that draws architectural diagrams.",
  instructions: "Create an architectural diagram of a {{subject}}.",
  modelOptions: {
    quality: "hd",
    style: "vivid",
  },
});

// AIGNE 实例必须配置一个 imageModel
const aigne = new AIGNE({
  imageModel: openai.image("dall-e-3"),
});

async function run() {
  const result = await aigne.invoke(architectAgent, {
    input: {
      subject: "microservices application",
    },
  });

  console.log(result);
}

run();

上述代码定义了一个名为 "architect" 的 ImageAgent。它使用一个带模板的 instructions 字符串来生成提示。modelOptions 对象将特定参数传递给底层的 DALL-E 3 模型,以请求生成高清、生动的图像。

YAML 配置

或者,您也可以在 .yaml 文件中定义 ImageAgent。这种方法有助于将 Agent 定义与应用程序逻辑分离。

"image-agent.yaml"

yaml
type: image
name: style-artist
description: Draws an image of an object in a specific style.
instructions: |
  Draw an image of a {{object}} in the {{style}} style.
input_schema:
  type: object
  properties:
    object:
      type: string
      description: The object to draw.
    style:
      type: string
      description: The style of the image.
  required:
    - object
    - style

在这个声明式示例中,type: image 指定了这是一个 ImageAgentinstructions 字段包含一个带有占位符({{object}}{{style}})的多行字符串,这些占位符将在调用期间从输入中填充。input_schema 正式定义了预期的输入结构。

参数

ImageAgent 的行为由其构建期间提供的选项控制。

  • instructions string | PromptBuilder (required) — 用于图像生成的提示模板。可以是一个简单的字符串,也可以是一个用于更复杂逻辑的 PromptBuilder 实例。格式为 {{key}} 的占位符将被输入对象中的值替换。
  • modelOptions Record<string, any> — 一个包含要传递给底层 ImageModel 的特定于提供程序的参数的对象。这允许对生成过程进行微调控制,例如指定图像质量、尺寸或风格。有关可用选项,请参考特定模型提供程序的文档。
  • outputFileType 'url' | 'base64' — 指定输出图像的所需格式。默认行为由 ImageModel 决定,但您可以明确请求公共 URL (url) 或 Base64 编码的字符串 (base64)。

调用与输出

当调用 ImageAgent 时,它会将输入传递给其 PromptBuilder 以生成最终的提示。然后,它会使用此提示和任何指定的 modelOptions 调用已配置的 ImageModel

Agent 的输出是一个符合 ImageModelOutput 模式的对象,其中包含所请求格式的生成图像。

调用示例

"调用 Agent"

typescript
const result = await aigne.invoke(styleArtistAgent, { // 假设 styleArtistAgent 是从 YAML 加载的
  input: {
    object: "futuristic city",
    style: "cyberpunk",
  },
});

响应示例

"ImageAgent 输出"

json
{
  "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/...",
  "base64": null
}

响应包含一个指向生成图像的 url。如果 outputFileType 设置为 'base64',则会填充 base64 字段。

总结

ImageAgent 提供了一种结构化且可重用的方式,可将图像生成功能集成到您的 AI 工作流中。通过将提示逻辑与模型交互分离,它有助于实现清晰且可维护的 Agent 设计。

有关其他 Agent 类型的更多信息,请参阅以下文档: