跳转至

智能体

AI 智能体是能够自主推理、做出决策、与环境交互并执行行动以实现特定目标的自治系统。在 Koog 中,AI 智能体不仅仅是围绕 LLM 的简单封装;它是一个为 JVM 生态系统设计的结构化、类型安全的状态机。

Koog 智能体围绕以下核心概念构建:

  • 提示执行器 负责管理和执行提示,使智能体能够与 LLM 交互以进行推理和决策。
  • 策略 定义了智能体的工作流程。它可以是有向图、函数或规划器的形式。详见智能体类型
  • 智能体可以使用工具与外部数据源和服务进行交互。
  • 您可以使用功能特性来扩展和增强 AI 智能体的功能。

Tip

有关创建和运行一个最小化智能体的信息,请参阅快速入门

智能体类型

根据您需要执行的任务,Koog 提供了多种智能体类型:

  • 基础智能体 适用于不需要任何自定义逻辑的简单任务。这些智能体实现了适用于大多数常见用例的预定义策略。
  • 基于图的智能体 提供了对智能体工作流程、状态管理和可视化的完全控制和灵活性。
  • 函数式智能体 使您能够快速将自定义逻辑原型化为一个函数,并访问智能体的上下文。
  • 规划器智能体 能够通过迭代循环自主规划和执行多步骤任务,直到达到期望的最终状态。

智能体配置

智能体配置定义了智能体的执行参数,包括初始提示、语言模型和迭代限制。

Tip

有关创建和运行一个最小化智能体的信息,请参阅快速入门

对于简单的智能体,除了必需的提示执行器和语言模型外,您可以直接在智能体构造函数中指定初始系统提示和其他一些参数:

val agent = AIAgent(
    promptExecutor = simpleOpenAIExecutor(System.getenv("YOUR_API_KEY")),
    llmModel = OpenAIModels.Chat.GPT4o,
    systemPrompt = "You are a helpful assistant.",
    temperature = 0.7,
    maxIterations = 10
)

AIAgent<String, String> agent = AIAgent.builder()
    .promptExecutor(simpleOpenAIExecutor(System.getenv("YOUR_API_KEY")))
    .llmModel(OpenAIModels.Chat.GPT4o)
    .systemPrompt("You are a helpful assistant.")
    .temperature(0.7)
    .maxIterations(10)
    .build();

或者,您可以创建一个 AIAgentConfig 实例来更精细地定义智能体的行为和参数,然后将其传递给智能体构造函数。这使您能够定义包含多条消息、对话历史、LLM 参数和附加执行参数的复杂提示。

=== "Kotlin"

val agentConfig = AIAgentConfig(
    prompt = prompt(
        id = "assistant",
        params = LLMParams(
            temperature = 0.7
        )
    ) {
        system("You are a helpful assistant.")
    },
    model = OpenAIModels.Chat.GPT4o,
    maxAgentIterations = 10
)

val agent = AIAgent(
    promptExecutor = simpleOpenAIExecutor(System.getenv("OPENAI_API_KEY")),
    agentConfig = agentConfig
)

Prompt prompt = Prompt.builder("assistant")
    .system("You are a helpful assistant.")
    .build()
    .withParams(new LLMParams(
        0.7,         // temperature
        null,        // maxTokens
        1,           // numberOfChoices
        null,        // speculation
        null,        // schema
        LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
        null,        // user
        null         // additionalProperties
    ));

AIAgentConfig agentConfig = AIAgentConfig.builder(OpenAIModels.Chat.GPT4o)
    .prompt(prompt)
    .maxAgentIterations(10)
    .build();

AIAgent<String, String> agent = AIAgent.builder()
    .promptExecutor(simpleOpenAIExecutor(System.getenv("OPENAI_API_KEY")))
    .agentConfig(agentConfig)
    .build();

以下是 AIAgentConfig 的参数说明:

  • prompt 定义了初始的 提示词LLM 参数

  • model 指定了智能体交互所使用的语言模型。 您可以使用预定义的模型之一,或 创建自定义模型配置

  • maxAgentIterations 限制了智能体在终止前可以执行的最大步骤数。 每个步骤都是智能体工作流中的一个 节点

  • missingToolsConversionStrategy 定义了在智能体执行过程中处理缺失工具的策略。

  • responseProcessor 可用于定义自定义响应处理器。 例如,它可以对响应内容进行审核和验证、更改响应格式或记录响应。