force structured response format
This commit is contained in:
@@ -1,12 +1,101 @@
|
||||
import os
|
||||
import sys
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
from openai import OpenAI
|
||||
client = OpenAI()
|
||||
|
||||
response = client.responses.create(
|
||||
model="gpt-4o-mini",
|
||||
tools=[{"type": "web_search_preview"}],
|
||||
input="Wie gingen die letzten beiden Spiele der Frauen-Fußball-EM aus?"
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '_data')))
|
||||
from api_keys import OPENAI_API_KEY
|
||||
|
||||
client = OpenAI(api_key=OPENAI_API_KEY)
|
||||
|
||||
preliminary_angebot_schema = {
|
||||
"name": "create_preliminary_angebot",
|
||||
"description": "Erstellt ein strukturiertes PreliminaryAngebot",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {"type": "string"},
|
||||
"beschreibung": {"type": "string"},
|
||||
"strasse": {"type": "string"},
|
||||
"hausNr": {"type": "string"},
|
||||
"plz": {"type": "string"},
|
||||
"ort": {"type": "string"},
|
||||
"adresseZusatz": {"type": "string"},
|
||||
|
||||
"web": {"type": "string"},
|
||||
"mail": {"type": "string"},
|
||||
"telefon": {"type": "string"},
|
||||
"fax": {"type": "string"},
|
||||
|
||||
"kategorie": {"type": "string"},
|
||||
"unterkategorie": {"type": "string"},
|
||||
"themen": {"type": "string"},
|
||||
|
||||
"traeger": {"type": "string"},
|
||||
"zielgruppe": {"type": "string"},
|
||||
"angebote": {"type": "string"},
|
||||
"oeffnungsZeiten": {"type": "string"},
|
||||
"kostenuebernahme": {"type": "string"},
|
||||
"sprache": {"type": "string"},
|
||||
"barrierefreiheit": {"type": "string"},
|
||||
"konstellation": {"type": "string"},
|
||||
|
||||
"restInput": {"type": "string"},
|
||||
"completeInput": {"type": "string"},
|
||||
},
|
||||
"required": ["name", "beschreibung", "plz", "ort", "adresseZusatz", "web", "restInput", "completeInput"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class PreliminaryAngebot(BaseModel):
|
||||
name: str = ""
|
||||
beschreibung: str = ""
|
||||
strasse: Optional[str] = ""
|
||||
hausNr: Optional[str] = ""
|
||||
plz: str = ""
|
||||
ort: str = ""
|
||||
adresseZusatz: str = ""
|
||||
|
||||
web: str = ""
|
||||
mail: Optional[str] = ""
|
||||
telefon: Optional[str] = ""
|
||||
fax: Optional[str] = ""
|
||||
|
||||
kategorie: Optional[str] = ""
|
||||
unterkategorie: Optional[str] = ""
|
||||
themen: Optional[str] = ""
|
||||
|
||||
traeger: Optional[str] = ""
|
||||
zielgruppe: Optional[str] = ""
|
||||
angebote: Optional[str] = ""
|
||||
oeffnungsZeiten: Optional[str] = ""
|
||||
kostenuebernahme: Optional[str] = ""
|
||||
sprache: Optional[str] = ""
|
||||
barrierefreiheit: Optional[str] = ""
|
||||
konstellation: Optional[str] = ""
|
||||
|
||||
restInput: str = ""
|
||||
completeInput: str = ""
|
||||
|
||||
|
||||
inputText = '''
|
||||
Hier sind Daten einer psychologischen Anlaufstation.
|
||||
Kannst du fehlende Daten ergänzen und fehlerhafte ggf. ersetzen? Wichtig wäre die Angabe der korrekten Webseite.
|
||||
|
||||
Kinder- u. Jugendlichenpsychotherapeutin Stephanie Eckmann, Lünen
|
||||
Birkenweg 9
|
||||
44532 Lünen
|
||||
'''
|
||||
|
||||
response = client.responses.parse(
|
||||
model="gpt-4o-mini",
|
||||
tools=[{"type": "web_search_preview"}],
|
||||
input=inputText,
|
||||
text_format=PreliminaryAngebot,
|
||||
)
|
||||
print('### Input ###\n', inputText.replace('\r', '').replace('\n', ' '))
|
||||
print('\n\n### Response ###\n', response.output_text)
|
||||
|
||||
print(response.output_text)
|
||||
|
||||
print("Ok ciao")
|
||||
print("\n\nOk ciao")
|
||||
|
Reference in New Issue
Block a user