Adapt openai.py to work with xAI (#16903)

* Adapt openai.py to work with xAI

It appears xAI is a bit more strict in regards to how the prompt is sent. This changes the prompt to be a dictionary with `"type": "text"` which works with OpenAI and xAI.

* Adapt openai.py to work with xAI

add "detail": "low"

* Adapt openai.py to work with xAI

Apply Ruff formatting and linting fixes
This commit is contained in:
D34DC3N73R 2025-03-03 11:53:24 -08:00 committed by GitHub
parent f3765bc391
commit 180b0af3c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -26,13 +26,9 @@ class OpenAIClient(GenAIClient):
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]: def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
"""Submit a request to OpenAI.""" """Submit a request to OpenAI."""
encoded_images = [base64.b64encode(image).decode("utf-8") for image in images] encoded_images = [base64.b64encode(image).decode("utf-8") for image in images]
try: messages_content = []
result = self.provider.chat.completions.create( for image in encoded_images:
model=self.genai_config.model, messages_content.append(
messages=[
{
"role": "user",
"content": [
{ {
"type": "image_url", "type": "image_url",
"image_url": { "image_url": {
@ -40,9 +36,20 @@ class OpenAIClient(GenAIClient):
"detail": "low", "detail": "low",
}, },
} }
for image in encoded_images )
] messages_content.append(
+ [prompt], {
"type": "text",
"text": prompt,
}
)
try:
result = self.provider.chat.completions.create(
model=self.genai_config.model,
messages=[
{
"role": "user",
"content": messages_content,
}, },
], ],
timeout=self.timeout, timeout=self.timeout,