New version.

This commit is contained in:
retoor 2025-03-08 13:43:37 +01:00
parent 03110b4a80
commit 0b61e1c0cf

View File

@ -367,45 +367,8 @@ class Agent:
return re.findall(image_url_pattern, text, re.IGNORECASE)
def communicate_images(self, message:str):
messages = message
if not isinstance(messages, list):
messages = [message]
for message in messages:
if isinstance(message, dict):
message_role = message["role"]
message = message["content"]
else:
message_role = "user"
for image_path in self.extract_image_urls(message):
response = self.client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Describe the image in full detail, in a way that a human could understand."},
{
"type": "image_url",
"image_url": {
"url": image_path,
},
},
],
}
],
)
response = response.choices[0].message.content
response = f"This is the description of the image from the url {image_path} i have mentioned: " + response
self.communicate(response,role="user",ignore_image_urls=True)
def communicate(self, message: str, role: str = "user", ignore_image_urls:bool=False):
def communicate(self, message: str, role: str = "user"):
log.debug(f"Sending message: {message} to assistant {self.assistant.id} in thread {self.thread.id}.")
if not ignore_image_urls:
self.communicate_images(message)
messages = isinstance(message, list) and message or [message]
for message in messages:
if isinstance(message, dict):
@ -413,6 +376,18 @@ class Agent:
message = message["content"]
else:
message_role = role
message = [
{"type":"text","text":message}
]
for image_url in self.extract_image_urls(message[0]["text"]):
message.append(
{
"type": "image_url",
"image_url": {
"url": image_url,
},
}
)
self.client.beta.threads.messages.create(
thread_id=self.thread.id,
role=message_role,