Files
engine/examples/server/responses_vision.py
Eric BuehlerandGitHub 6eb0be81c8 Initial support for OpenAI Responses API (#1580)
* Add responses api

* Improvements

* Sampler accuracy

* Fix response

* Fix response

* Reject instructions field

* Proper caching

* Better example

* Add responses vision example

* Add audio example

* Typos

* Docs

* Update docs
2025-07-26 08:49:27 -04:00

67 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from openai import OpenAI
import httpx
import textwrap
import json
def log_response(response: httpx.Response):
request = response.request
print(f"Request: {request.method} {request.url}")
print(" Headers:")
for key, value in request.headers.items():
if key.lower() == "authorization":
value = "[...]"
if key.lower() == "cookie":
value = value.split("=")[0] + "=..."
print(f" {key}: {value}")
print(" Body:")
try:
request_body = json.loads(request.content)
print(textwrap.indent(json.dumps(request_body, indent=2), " "))
except json.JSONDecodeError:
print(textwrap.indent(request.content.decode(), " "))
print(f"Response: status_code={response.status_code}")
print(" Headers:")
for key, value in response.headers.items():
if key.lower() == "set-cookie":
value = value.split("=")[0] + "=..."
print(f" {key}: {value}")
client = OpenAI(api_key="foobar", base_url="http://localhost:1234/v1/")
# # Enable this to log requests and responses
# client._client = httpx.Client(
# event_hooks={"request": [print], "response": [log_response]}
# )
# first turn
resp1 = client.responses.create(
model="default",
input=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": "Pink_flower.jpg"},
},
{
"type": "text",
"text": "What is this?",
},
],
}
],
)
print(resp1.output_text)
# follow‑up: no need to resend the first question
resp2 = client.responses.create(
model="default", previous_response_id=resp1.id, input="Can you eat it?"
)
print(resp2.output_text)