当前位置: 首页 > news >正文

【LLM】 BaseModel的作用

在 Python 里,BaseModel 是 pydantic 库提供的一个基类,pydantic 是用于数据验证和设置管理的强大库。BaseModel 主要有以下作用:

1. 数据验证

BaseModel 能对输入的数据进行验证,保证数据符合定义的类型和约束。要是输入的数据不满足要求,pydantic 会抛出异常。


from pydantic import BaseModel, Fieldclass User(BaseModel):name: str = Field(..., min_length=2, max_length=50)age: int = Field(..., gt=0, lt=120)# 验证通过
user1 = User(name="Alice", age=25)
print(user1)# 验证失败,抛出异常
try:user2 = User(name="A", age=150)
except Exception as e:print(e)

输出结果:


name='Alice' age=25
2 validation errors for User
nameString should have at least 2 characters [type=string_too_short, input_value='A', input_type=str]For further information visit https://errors.pydantic.dev/2.5/v/string_too_short
ageInput should be less than 120 [type=number_too_big, input_value=150, input_type=int]For further information visit https://errors.pydantic.dev/2.5/v/number_too_big

2. 数据解析

BaseModel 可以把不同格式的数据(像字典、JSON 等)解析成 Python 对象,同时进行类型转换。

示例代码:

from pydantic import BaseModelclass Book(BaseModel):title: strprice: float# 从字典解析数据
book_data = {"title": "Python Crash Course", "price": 29.99}
book = Book(**book_data)
print(book)

输出结果:


title='Python Crash Course' price=29.99

3. 数据序列化

BaseModel 支持将 Python 对象序列化为字典或 JSON 字符串,方便数据的存储和传输。

from pydantic import BaseModelclass Product(BaseModel):name: strquantity: intproduct = Product(name="Laptop", quantity=10)# 序列化为字典
product_dict = product.model_dump()
print(product_dict)# 序列化为 JSON 字符串
product_json = product.model_dump_json()
print(product_json)

输出结果:

{'name': 'Laptop', 'quantity': 10}
{"name": "Laptop", "quantity": 10}

4. 类型提示

借助 BaseModel 定义数据结构,能为代码提供清晰的类型提示,增强代码的可读性和可维护性。

在你当前编辑的代码里,Fetch 类继承自 BaseModel,目的是定义获取 URL 的参数,对输入参数进行验证和解析:

class Fetch(BaseModel):"""Parameters for fetching a URL."""url: Annotated[AnyUrl, Field(description="URL to fetch")]max_length: Annotated[int,Field(default=5000,description="Maximum number of characters to return.",gt=0,lt=1000000,),]start_index: Annotated[int,Field(default=0,description="On return output starting at this character index, useful if a previous fetch was truncated and more context is required.",ge=0,),]raw: Annotated[bool,Field(default=False,description="Get the actual HTML content of the requested page, without simplification.",),]
http://www.dtcms.com/a/312816.html

相关文章:

  • 《软件测试与质量控制》实验报告三 系统功能测试
  • Tomcat访问Controller的内部实现原理
  • 批发订货系统:私有化部署与源代码支持越来越受市场追捧
  • 【Android】RecyclerView循环视图(2)——动态加载数据
  • IntelliJ IDEA开发编辑器摸鱼看股票数据
  • git用户设置
  • LangChain4J入门:使用SpringBoot-start
  • 【abc417】E - A Path in A Dictionary
  • template<typename R = void> 意义
  • 2. 字符设备驱动
  • LeetCode Hot 100,快速学习,不断更
  • #C语言——刷题攻略:牛客编程入门训练(四):运算
  • Kazam产生.movie.mux后恢复视频为.mp4
  • 小宿科技:AI Agent 的卖铲人
  • zookeeper持久化和恢复原理
  • idea中.xml文件的块注释快捷键
  • Hugging Face 模型文件介绍
  • IDEA查看源码利器XCodeMap插件
  • 【高等数学】第七章 微分方程——第八节 常系数非齐次线性微分方程
  • 【lucene】ByteBuffersIndexInput
  • k8s日志收集
  • Redis面试精讲 Day 8:Stream消息队列设计与实现
  • 对接古老系统的架构实践:封装混乱,走向有序
  • [硬件电路-146]:模拟电路 - DCDC与LDO详解、常见芯片、管脚定义
  • 基于 LangChain + 通义千问 + bge-large 中文 Embedding 搭建一个RAG问答示例
  • TVS二极管数据手册解读
  • 【lucene】ByteBufferGuard
  • Android 之 MVVM架构
  • 【MySQL】MySQL中锁有哪些?
  • Flutter 函数的基本使用