构建基于LLM驱动的API代理以执行任务

作者:API传播员 · 2025-11-09 · 阅读时间:5分钟

开发人员长期以来一直通过构建 Web 应用程序等界面,使用户能够利用核心产品的功能。在大型语言模型(LLM)应用程序中处理数据的相关方法,请参考我之前的文章《构建 LLM 驱动的数据代理进行数据分析》。本文将探讨如何通过添加自由格式对话作为 API 的接口,实现与任何 API 的深度交互。


什么是 API 代理?

API 代理,也称为执行代理,是为完成特定目标而设计的工具。这些代理通过一组预定义的功能,执行用户请求的一项或多项任务。其核心功能包括:

  • 根据数据源回答用户问题。
  • 执行用户(人类)或其他代理(机器)的需求。

传统上,这些功能通过 API 和某种形式的交互层(如 Web 应用程序或页面)实现,用户需要手动操作按钮或编写代码来完成任务。而现在,通过引入 LLM,可以卸载部分推理任务,并通过与 API、SDK 或软件的对话,简化交互过程。


如何构建 API 代理?

为了更好地理解这一主题,我们以构建一个“创意副驾驶员”为例,帮助营销团队利用 API 代理进行头脑风暴。

选择 LLM

在选择 LLM 时,如果所用模型未针对代理工作流进行调整,可以将提示重新表述为多项选择题(MCQ)。大多数经过指令调优的模型都能处理 MCQ。有关微调的更多信息,请参考相关资料。

选择用例

接下来,选择一个具体的用例。您可以在 NVIDIA 的 NGC 目录中探索各种 AI 模型(如下图所示)。

在本例中,我们将使用 NVIDIA AI Foundation 的 API 模型,构建一个“头脑风暴副驾驶员”。当然,您也可以选择其他 API 来构建面向执行的代理。为了实现这一目标,我们将使用以下三个模型:


构建代理的核心组件

AI 代理通常由以下四个核心组件组成:

工具

工具是对模型的单个函数调用。在本例中,我们为每个 API 调用创建了对应的类,具体实现如下图所示:

Python 脚本示例

规划模块与代理核心

规划模块负责生成执行计划,而代理核心则负责执行这些计划。有关不同规划算法的详细信息,请参考以下资源:

  • 带有递归求解器的显式问题分解模块示例:参阅《LLM 代理简介》。
  • 贪婪迭代执行计划示例:参阅《构建您的第一个 LLM 代理应用程序》。

在某些情况下,静态生成的计划可以简化执行流程,尤其是当 API 的行为具有确定性时。融合规划模块和代理核心的方式,可以进一步简化架构。

使用 LLM 编译器风格的方法

当 API 行为确定时,可以预先规划执行步骤,从而减少动态规划的复杂性。然而,这种方法也存在局限性,例如当计划失败时,缺乏恢复机制。此外,LLM 必须经过有效调整,才能处理复杂的逻辑。

以下是一个使用 Mixtral 8x7B 模型的提示示例:

prompt = """Your task is to generate a plan for the problem user gave using FUNCTIONS. Just generate the plan. Do not solve.

[
    {
        "function": "ImageGenerator",
        "description": "Generates an Image based on a prompt description",
        "arguments": [
            {
                "name": "prompt",
                "type": "string",
                "description": "Describe what is the key subject of the image, followed by the background."
            },
            {
                "name": "negative_prompt",
                "type": "string",
                "description": "what shouldn't be in the image. Fill none if not specified."
            }
        ]
    },
    ...
]


User: .

Assistant: ```json
"""

函数调用指南

尽管 Mixtral 8x7B 针对函数调用进行了优化,但仍可能生成不符合语法的输出。建议使用输出令牌约束技术,确保输出的语法正确性。


复杂用例示例

以下是一个复杂用例,展示如何通过 API 代理完成多项任务:

问题:为我的广告活动创建一篇社交媒体帖子,推广新的 WishyWash 洗涤剂(UltraClean 配方,售价 4.99 美元)。同时生成一张相关图片,并集思广益其他营销创意。

计划步骤

  1. 生成图片。
  2. 创建社交媒体帖子。
  3. 提供其他营销创意。

以下是具体的函数调用:

{
    "function": "ImageGenerator",
    "arguments": {
        "prompt": "A bright and clean laundry room with a large bottle of WishyWash detergent, featuring the new UltraClean formula and softener, placed prominently on a shelf.",
        "negative_prompt": "No clutter, no other brands, only WishyWash."
    }
},
{
    "function": "TextGenerator",
    "arguments": {
        "prompt": "Compose a tweet to promote the new WishyWash detergent with the UltraClean formula and softener at $4.99. Make sure to highlight its benefits and competitive pricing."
    }
},
{
    "function": "TextGenerator",
    "arguments": {
        "prompt": "Generate ideas for marketing campaigns to increase WishyWash detergent sales, specifically focusing on the new UltraClean formula and softener."
    }
}

使用工具生成结果

使用 Stable Diffusion XL 生成图片

尽管生成的图片可能需要进一步优化,但它是与专家编辑头脑风暴的良好起点。

使用 Mixtral 8x7B 生成文本

Mixtral 8x7B 能够根据复杂指令生成社交媒体帖子和营销创意(如下图所示)。

社交媒体帖子示例


构建 API 代理应用程序的注意事项

扩展 API

随着需求的增加,可能需要构建一个检索增强生成(RAG)系统,根据用户问题动态选择最相关的工具。

改进规划

优化规划模块的逻辑,确保在复杂任务中提高执行效率。


总结

本文介绍了构建 LLM 驱动的 API 执行代理的基本概念和方法。通过结合 LLM 的推理能力与 API 的执行能力,可以实现更高效的任务处理。建议进一步探索开源生态系统,选择适合自己应用场景的代理框架。

原文链接: https://developer.nvidia.com/blog/build-an-llm-powered-api-agent-for-task-execution/