将Instructor与SQLModel集成¶
SQLModel 是一个库,旨在通过使用Python对象与SQL数据库进行交互。SQLModel 基于 Pydantic 和 SQLAlchemy,由 tiangolo 创建,他还开发了 FastAPI。因此,您可以期待所有这些库之间的无缝集成,减少代码重复并提升您的开发体验。
示例:将来自Instructor的响应直接添加到您的数据库¶
定义模型¶
首先,我们将定义一个模型,该模型将作为我们数据库的表以及从Instructor输出的结构。
模型定义
你需要将你的模型同时子类化为SQLModel和instructor.OpenAISchema,以便它们能与SQLModel一起工作
from typing import Optional
from sqlmodel import Field, SQLModel
import instructor
class Hero(SQLModel, instructor.OpenAISchema, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
secret_name: str
age: Optional[int] = None
生成记录¶
create_hero 函数将查询 OpenAI 以获取 Hero 记录
import instructor
from openai import OpenAI
client = instructor.from_openai(OpenAI())
def create_hero() -> Hero:
return client.chat.completions.create(
model="gpt-3.5-turbo",
response_model=Hero,
messages=[
{"role": "user", "content": "Make a new superhero"},
],
)
将响应插入数据库¶
engine = create_engine("sqlite:///database.db")
SQLModel.metadata.create_all(engine)
hero = create_hero()
print(hero.model_dump())
#> {'name': 'Superman', 'secret_name': 'Clark Kent', 'age': 30, 'id': None}
with Session(engine) as session:
session.add(hero)
session.commit()

就是这样!你现在可以为你的数据库和Instructor使用相同的模型,使它们无缝协作!同时查看FastAPI指南,了解如何在API中使用这些模型。