【Agent】2. 具有结构化输出的代理
当您运行代理或多代理框架时您可能希望它以特定格式输出结果。在本案例中我们将看到一个如何将此功能应用于FunctionAgent的简单示例1. 案例目标本案例的主要目标是演示如何创建一个能够以预定义结构化格式输出结果的代理。具体来说我们将定义一个结构化输出格式使用Pydantic模型创建一个简单的计算器代理能够执行加法和乘法运算配置代理以结构化格式返回计算结果展示如何提取和使用结构化输出2. 技术栈与核心依赖LlamaIndex- 用于构建代理和处理结构化输出OpenAI API- 提供语言模型Pydantic- 用于定义和验证数据结构FunctionAgent- 用于构建可执行工具调用的代理核心依赖包! pip install llama-index3. 环境配置首先需要设置OpenAI API密钥from getpass import getpass import os os.environ[OPENAI_API_KEY] getpass()4. 案例实现4.1 定义结构化输出格式我们使用Pydantic的BaseModel来定义一个结构化输出格式包含操作类型和结果两个字段from pydantic import BaseModel, Field class MathResult(BaseModel): operation: str Field(descriptionThe operation that has been performed) result: int Field(descriptionResult of the operation)4.2 创建计算器代理接下来我们创建一个简单的计算器代理它能够执行加法和乘法运算from llama_index.llms.openai import OpenAI from llama_index.core.agent.workflow import FunctionAgent llm OpenAI(modelgpt-4.1) def add(x: int, y: int): Add two numbers return x y def multiply(x: int, y: int): Multiply two numbers return x * y agent FunctionAgent( llmllm, output_clsMathResult, tools[add, multiply], system_promptYou are a calculator agent that can add or multiply two numbers by calling tools, namecalculator, )关键点在于我们通过output_clsMathResult参数指定了代理的输出格式这将使代理以我们定义的MathResult结构返回结果。4.3 运行代理并获取结构化输出现在我们可以运行代理并获取结构化输出response await agent.run(What is the result of 10 multiplied by 4?)获取结构化输出的两种方式# 以普通字典形式打印结构化输出 print(response.structured_response) # 以Pydantic模型形式打印结构化输出 print(response.get_pydantic_model(MathResult))5. 案例效果5.1 代理执行当我们询问10乘以4的结果是什么时代理将理解问题是一个乘法运算调用multiply工具传入参数10和4获取工具返回的结果40按照MathResult格式组织输出包含操作类型multiply和结果405.2 结构化输出代理的输出将以两种形式提供字典形式{operation: multiply, result: 40}Pydantic模型形式MathResult(operationmultiply, result40)这种结构化输出使得后续处理更加方便可以直接访问特定字段如response.structured_response[result]获取计算结果。6. 案例实现思路6.1 结构化输出机制本案例的核心是LlamaIndex提供的结构化输出机制。通过指定output_cls参数代理被约束以预定义的格式返回结果。这种机制背后的工作原理是代理在执行工具调用后获取原始结果LLM被提示将结果组织成指定的结构化格式结果被解析为指定的Pydantic模型最终响应包含原始文本和结构化数据6.2 工具定义与调用案例中的工具add和multiply函数遵循简单的函数定义模式具有类型注解和文档字符串。这些注解和文档不仅帮助开发者理解工具功能也被LLM用来理解如何正确调用工具。6.3 代理配置代理的配置包括几个关键部分LLM模型指定用于处理的语言模型输出类定义结构化输出格式工具集代理可调用的函数列表系统提示指导代理如何行为的指令7. 扩展建议7.1 更复杂的结构化输出定义嵌套的Pydantic模型处理更复杂的数据结构添加可选字段和默认值提高输出格式的灵活性使用Pydantic的验证器确保数据质量和一致性7.2 多种输出格式实现根据查询类型动态选择不同输出格式的机制添加输出格式选择工具让用户指定首选输出格式支持多种序列化格式JSON、XML、YAML等7.3 错误处理与验证添加输出验证机制确保结构化数据符合预期实现错误恢复策略当输出不符合格式时提供备选方案添加详细的错误信息帮助调试输出格式问题7.4 性能优化缓存常用的结构化输出模板减少重复处理实现批量处理同时处理多个查询并返回结构化结果优化模型提示减少结构化输出所需的令牌数量8. 总结本案例展示了如何创建一个能够以结构化格式输出结果的代理。这种方法的核心优势在于一致性输出格式始终符合预定义的结构便于后续处理可靠性结构化输出减少了解析错误的可能性集成性结构化数据更容易与其他系统集成可扩展性可以轻松扩展输出格式以适应更复杂的需求结构化输出是构建生产级AI应用的关键技术之一。它使得AI系统的输出更加可预测、可处理特别是在需要将AI输出与其他系统组件集成的场景中。通过本案例的方法开发者可以创建各种专门代理如数据分析代理、报告生成代理、API调用代理等每个代理都能以最适合其任务的格式输出结果。这种能力为构建更复杂、更可靠的AI系统奠定了基础。

相关新闻

应急救灾场景下的对讲机中继组网与快速部署方案

应急救灾场景下的对讲机中继组网与快速部署方案

一、应急通信的特殊性与挑战应急救灾场景下的通信保障与日常商业通信有本质区别。地震、洪水、森林火灾、矿山事故等突发事件往往伴随公网基站损毁、电力中断、道路受阻等情况,传统依赖运营商网络的通信手段可能完全失效。此时,以对讲机为代表的无线自组…

2026/11/10 23:30:44 阅读更多 →
高寒铁路沿线专网通信落地实战:场景痛点、组网优化与工程案例复盘

高寒铁路沿线专网通信落地实战:场景痛点、组网优化与工程案例复盘

0. 前言黑龙江高寒铁路沿线、场站、区间隧道、野外作业区段,属于国内专网通信落地环境最严苛的场景之一。铁路通信对链路零中断、低延迟、抗干扰、全天候可用有着极高标准,直接关系行车调度、巡检作业、应急救援、场站安保的核心安全。区别常规市政、园区…

2026/11/11 6:00:21 阅读更多 →
GDB 调试手册

GDB 调试手册

程序崩溃或行为异常时,GDB 能把你直接送到出错的那一行。本手册按真实排查流程组织:从可调试构建、复现崩溃,到读栈、查内存,再用断点与观察点逼出逻辑错误。 关键词:bt 看崩溃栈 watch 抓变量改写者 core 事后验尸 …

2026/11/11 5:57:16 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻