mirror of
https://github.com/kennethreitz/simplemind.git
synced 2026-06-05 06:46:18 +00:00
Refactor OpenAI provider code for improved readability and consistency
This commit is contained in:
@@ -38,9 +38,7 @@ class OpenAITool(BaseTool):
|
||||
|
||||
# Check if there's a tool call
|
||||
if assistant_message.tool_calls:
|
||||
tool_call = assistant_message.tool_calls[
|
||||
0
|
||||
] # Get the first tool call
|
||||
tool_call = assistant_message.tool_calls[0] # Get the first tool call
|
||||
if tool_call.function.name == self.name:
|
||||
# Execute the function
|
||||
import json
|
||||
@@ -128,8 +126,7 @@ class OpenAI(BaseProvider):
|
||||
|
||||
# Format messages from conversation
|
||||
formatted_messages = [
|
||||
{"role": msg.role, "content": msg.text}
|
||||
for msg in conversation.messages
|
||||
{"role": msg.role, "content": msg.text} for msg in conversation.messages
|
||||
]
|
||||
|
||||
# Set up tools if provided
|
||||
@@ -154,15 +151,12 @@ class OpenAI(BaseProvider):
|
||||
|
||||
# Handle tool responses if needed
|
||||
while response.choices[0].message.tool_calls:
|
||||
print(response)
|
||||
# Handle each tool call
|
||||
for tool in converted_tools:
|
||||
tool.handle(response, formatted_messages)
|
||||
if tool.is_executed():
|
||||
# Make another API call with the updated messages
|
||||
response = self.client.chat.completions.create(
|
||||
**request_kwargs
|
||||
)
|
||||
response = self.client.chat.completions.create(**request_kwargs)
|
||||
tool.reset_result()
|
||||
|
||||
final_message = response.choices[0].message.content
|
||||
@@ -188,25 +182,14 @@ class OpenAI(BaseProvider):
|
||||
"""Get a structured response from the OpenAI API."""
|
||||
# Ensure messages are provided in kwargs
|
||||
messages = [
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": prompt
|
||||
}
|
||||
]
|
||||
},
|
||||
{"role": "user", "content": [{"type": "text", "text": prompt}]},
|
||||
]
|
||||
|
||||
"""Add an image (url or base64-encoded) to the message if provided."""
|
||||
if image_url:
|
||||
messages[0]['content'].append({
|
||||
"type": "image_url",
|
||||
"image_url": {
|
||||
"url": image_url
|
||||
}
|
||||
})
|
||||
messages[0]["content"].append(
|
||||
{"type": "image_url", "image_url": {"url": image_url}}
|
||||
)
|
||||
|
||||
response = self.structured_client.chat.completions.create(
|
||||
messages=messages,
|
||||
@@ -218,29 +201,23 @@ class OpenAI(BaseProvider):
|
||||
|
||||
@logger
|
||||
def generate_text(
|
||||
self, prompt: str, *, llm_model: str | None = None, image_url: str | None = None, **kwargs
|
||||
self,
|
||||
prompt: str,
|
||||
*,
|
||||
llm_model: str | None = None,
|
||||
image_url: str | None = None,
|
||||
**kwargs,
|
||||
):
|
||||
"""Generate text using the OpenAI API."""
|
||||
messages = [
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": prompt
|
||||
}
|
||||
]
|
||||
},
|
||||
{"role": "user", "content": [{"type": "text", "text": prompt}]},
|
||||
]
|
||||
|
||||
"""Add an image (url or base64-encoded) to the message if provided."""
|
||||
if image_url:
|
||||
messages[0]['content'].append({
|
||||
"type": "image_url",
|
||||
"image_url": {
|
||||
"url": image_url
|
||||
}
|
||||
})
|
||||
messages[0]["content"].append(
|
||||
{"type": "image_url", "image_url": {"url": image_url}}
|
||||
)
|
||||
|
||||
response = self.client.chat.completions.create(
|
||||
messages=messages,
|
||||
@@ -251,32 +228,26 @@ class OpenAI(BaseProvider):
|
||||
|
||||
@logger
|
||||
def generate_stream_text(
|
||||
self, prompt: str, *, llm_model: str | None = None, image_url: str | None = None, **kwargs
|
||||
self,
|
||||
prompt: str,
|
||||
*,
|
||||
llm_model: str | None = None,
|
||||
image_url: str | None = None,
|
||||
**kwargs,
|
||||
) -> Iterator[str]:
|
||||
"""Generate streaming text using the OpenAI API.
|
||||
|
||||
Yields chunks of text as they are generated by the model.
|
||||
"""
|
||||
messages = [
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": prompt
|
||||
}
|
||||
]
|
||||
},
|
||||
{"role": "user", "content": [{"type": "text", "text": prompt}]},
|
||||
]
|
||||
|
||||
"""Add an image (url or base64-encoded) to the message if provided."""
|
||||
if image_url:
|
||||
messages[0]['content'].append({
|
||||
"type": "image_url",
|
||||
"image_url": {
|
||||
"url": image_url
|
||||
}
|
||||
})
|
||||
messages[0]["content"].append(
|
||||
{"type": "image_url", "image_url": {"url": image_url}}
|
||||
)
|
||||
|
||||
response = self.client.chat.completions.create(
|
||||
messages=messages,
|
||||
|
||||
Reference in New Issue
Block a user