Improved video referencing WIP (codex)
This commit is contained in:
23
agent.py
23
agent.py
@@ -2,8 +2,7 @@ import base64
|
||||
import mimetypes
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import Literal, cast
|
||||
from pydantic import BaseModel
|
||||
from typing import Any, Literal, cast
|
||||
|
||||
import httpx2
|
||||
from openai import OpenAI
|
||||
@@ -31,7 +30,17 @@ class Agent:
|
||||
**kwargs
|
||||
)
|
||||
self._model = model
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _raw_content(response: Any) -> str:
|
||||
"""Read message content without triggering SDK-side schema validation."""
|
||||
try:
|
||||
content = response.http_response.json()["choices"][0]["message"]["content"]
|
||||
except (AttributeError, KeyError, IndexError, TypeError) as error:
|
||||
raise RuntimeError("Agent returned an invalid response") from error
|
||||
if not isinstance(content, str):
|
||||
raise RuntimeError("Agent returned an empty response")
|
||||
return content
|
||||
|
||||
def completion(self, messages: list[AgentMessage], **kwargs) -> str:
|
||||
"""Generate a completion for specified messages."""
|
||||
@@ -43,12 +52,12 @@ class Agent:
|
||||
"content": m.content
|
||||
})
|
||||
)
|
||||
response = self._client.chat.completions.parse(
|
||||
response = self._client.chat.completions.with_raw_response.parse(
|
||||
model=self._model,
|
||||
messages=messages_raw,
|
||||
**kwargs
|
||||
)
|
||||
return response.choices[0].message.content # type: ignore
|
||||
return self._raw_content(response)
|
||||
|
||||
def completion_with_images(
|
||||
self,
|
||||
@@ -96,9 +105,9 @@ class Agent:
|
||||
"content": content,
|
||||
})
|
||||
|
||||
response = self._client.chat.completions.parse(
|
||||
response = self._client.chat.completions.with_raw_response.parse(
|
||||
model=self._model,
|
||||
messages=messages_raw,
|
||||
**kwargs,
|
||||
)
|
||||
return response.choices[0].message.content # type: ignore
|
||||
return self._raw_content(response)
|
||||
|
||||
Reference in New Issue
Block a user