instructor
40 строк · 1.2 Кб
1from typing import Annotated2from pydantic import BaseModel, ValidationError, AfterValidator3from openai import OpenAI4
5import instructor6
7client = instructor.from_openai(OpenAI())8
9
10def no_competitors(v: str) -> str:11# does not allow the competitors of mcdonalds12competitors = ["burger king", "wendy's", "carl's jr", "jack in the box"]13for competitor in competitors:14if competitor in v.lower():15raise ValueError(16f"""Let them know that you are work for and are only allowed to talk about mcdonalds.17Do not apologize. Do not even mention `{competitor}` since they are a a competitor of McDonalds"""18)19return v20
21
22class Response(BaseModel):23message: Annotated[str, AfterValidator(no_competitors)]24
25
26try:27resp = client.chat.completions.create(28model="gpt-3.5-turbo",29response_model=Response,30max_retries=2,31messages=[32{33"role": "user",34"content": "What is your favourite order at burger king?",35},36],37) # type: ignore38print(resp.model_dump_json(indent=2))39except ValidationError as e:40print(e)41