Pydantic与大模型的经典集成

技术文章大纲:Pydantic与大模型的经典集成

1. 引言
  • 介绍Pydantic的核心功能及其在现代Python开发中的重要性
  • 大模型(如GPT、LLaMA等)的兴起及其在应用开发中的挑战
  • Pydantic与大模型集成的优势:数据验证、结构化输入输出、类型安全
2. Pydantic与Autogen的基础集成
  • 结构化输入输出:使用Pydantic模型定义大模型的输入和输出格式
  • 数据验证与清洗:确保大模型的输入符合预期,避免错误或无效请求
  • 示例代码:展示如何用Pydantic包装大模型的API调用
from pydantic import BaseModel  
from typing import List  
 

class LLMOutput(BaseModel):  
    response: str  
    tokens_used: int  

 client = OpenAI(api_key=api_key, base_url=f'https://url')
        # 转换为对象
        try:
            if 'response_format' in params:
                # 1. 创建符合接口的 JSONSchema 对象
                json_schema_def = {
                    "name": "analysis_report",  # 符合命名规则
                    "description": "公司销售数据分析报告的结构化输出格式",
                    "schema": LLMOutput.model_json_schema(),  # Pydantic 生成的 Schema
                    "strict": True  # 启用严格模式
                }

                # 2. 构建完整的 response_format
                response_format = {
                    "type": "json_schema",
                    "json_schema": json_schema_def  # 注意这里是完整的 JSONSchema 对象
                }

                params['response_format'] = response_format
        except Exception as e:
            print(f"验证错误: {e}")
        # 发起对话请求
        response = client.chat.completions.create(**params)
        logger.debug(f"将完整响应返回,request_id:{request_id},响应结果:{response}")
        return response

3. Pydantic与大模型的Autogen集成
  • Agent架构概述:Agent作为自主决策单元,如何利用Pydantic规范其行为
  • 任务分解与验证:使用Pydantic定义Agent的任务步骤和中间结果
  • 动态响应处理:通过Pydantic模型解析大模型生成的动态内容(如JSON、自然语言)
  • 示例代码:展示一个简单的Agent流程,此处我先介绍一种通过Autogen自身out_put_type的写法,它还有其他的方式可以实现,例如使用工具,或响应结构化处理等
class Metadata(BaseModel):
    company_name: str = Field(..., description="公司名称")
    manager_name: str = Field(..., description="销售员名称")
    date: str = Field(..., description="时间")


class Response(BaseModel):
    metadata: Metadata
    todo: str = Field(..., description="负责内容")

agent = AssistantAgent(name=agent_name, model_client=model_client,
                                               system_message=agent_system_message,
                                                output_content_type=Response,
                                                model_client_stream=enable_stream)
result_dict = await self.process_stream_response(
                        analyzer_agent,
                        prompt,
                    )
3. 总结与展望
  • Pydantic在这个大模型“不靠谱”的年代,为数据准确性和系统稳定性提供了非常好的方案,真真切切的体现出了它的核心价值,尤其是金融和医疗等对数据准确性要求高的行业,它是当之为愧的佼佼者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔公子搬砖

您的支持,是我分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值