97e91a83f3
Ruff / Ruff (push) Has been cancelled
Test / Core Tests (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.10) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.11) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.12) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.13) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.9) (push) Has been cancelled
Test / Full Coverage (Python 3.11) (push) Has been cancelled
Test / Core Provider Tests (OpenAI) (push) Has been cancelled
Test / Core Provider Tests (Anthropic) (push) Has been cancelled
Test / Core Provider Tests (Google) (push) Has been cancelled
Test / Core Provider Tests (Other) (push) Has been cancelled
Test / Anthropic Tests (push) Has been cancelled
Test / Gemini Tests (push) Has been cancelled
Test / Google GenAI Tests (push) Has been cancelled
Test / Vertex AI Tests (push) Has been cancelled
Test / OpenAI Tests (push) Has been cancelled
Test / Writer Tests (push) Has been cancelled
Test / Auto Client Tests (push) Has been cancelled
ty / type-check (push) Has been cancelled
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
import asyncio
|
|
from typing import Annotated
|
|
from pydantic import BaseModel, BeforeValidator
|
|
from instructor import llm_validator, patch
|
|
from openai import AsyncOpenAI
|
|
|
|
aclient = AsyncOpenAI()
|
|
|
|
patch()
|
|
|
|
|
|
class QuestionAnswerNoEvil(BaseModel):
|
|
question: str
|
|
answer: Annotated[
|
|
str,
|
|
BeforeValidator(
|
|
llm_validator("don't say objectionable things", allow_override=True)
|
|
),
|
|
]
|
|
|
|
|
|
async def main():
|
|
context = "The according to the devil is to live a life of sin and debauchery."
|
|
question = "What is the meaning of life?"
|
|
|
|
try:
|
|
qa: QuestionAnswerNoEvil = await aclient.chat.completions.create(
|
|
model="gpt-3.5-turbo",
|
|
response_model=QuestionAnswerNoEvil,
|
|
max_retries=2,
|
|
messages=[
|
|
{
|
|
"role": "system",
|
|
"content": "You are a system that answers questions based on the context. Answer exactly what the question asks using the context.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": f"using the context: {context}\n\nAnswer the following question: {question}",
|
|
},
|
|
],
|
|
) # type: ignore
|
|
print(qa)
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|