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
36 lines
806 B
Python
36 lines
806 B
Python
from openai import OpenAI
|
|
from pydantic import BaseModel
|
|
import instructor
|
|
from instructor.processing.multimodal import Audio
|
|
import base64
|
|
|
|
client = instructor.from_openai(OpenAI())
|
|
|
|
|
|
class Person(BaseModel):
|
|
name: str
|
|
age: int
|
|
|
|
|
|
with open("./output.wav", "rb") as f:
|
|
encoded_string = base64.b64encode(f.read()).decode("utf-8")
|
|
|
|
resp = client.chat.completions.create(
|
|
model="gpt-4o-audio-preview",
|
|
response_model=Person,
|
|
modalities=["text"],
|
|
audio={"voice": "alloy", "format": "wav"},
|
|
messages=[
|
|
{
|
|
"role": "user",
|
|
"content": [
|
|
"Extract the following information from the audio",
|
|
Audio.from_path("./output.wav"),
|
|
],
|
|
},
|
|
],
|
|
) # type: ignore
|
|
|
|
print(resp)
|
|
# > Person(name='Jason', age=20)
|