first commit

This commit is contained in:
DigiJ
2026-03-13 12:56:43 -07:00
commit 159cf9fcfe
309 changed files with 64584 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
"""
This module implements various utilities common to AgentChat agents and teams.
"""
from ._utils import content_to_str, remove_images
__all__ = ["content_to_str", "remove_images"]

View File

@@ -0,0 +1,44 @@
from typing import List, Union
from agentdhal_core import FunctionCall, Image
from agentdhal_core.models import FunctionExecutionResult, LLMMessage, UserMessage
from pydantic import BaseModel
# Type aliases for convenience
_StructuredContent = BaseModel
_UserContent = Union[str, List[Union[str, Image]]]
_AssistantContent = Union[str, List[FunctionCall]]
_FunctionExecutionContent = List[FunctionExecutionResult]
_SystemContent = str
def content_to_str(
content: _UserContent | _AssistantContent | _FunctionExecutionContent | _SystemContent | _StructuredContent,
) -> str:
"""Convert the content of an LLMMessage to a string."""
if isinstance(content, str):
return content
elif isinstance(content, BaseModel):
return content.model_dump_json()
else:
result: List[str] = []
for c in content:
if isinstance(c, str):
result.append(c)
elif isinstance(c, Image):
result.append("<image>")
else:
result.append(str(c))
return "\n".join(result)
def remove_images(messages: List[LLMMessage]) -> List[LLMMessage]:
"""Remove images from a list of LLMMessages"""
str_messages: List[LLMMessage] = []
for message in messages:
if isinstance(message, UserMessage) and isinstance(message.content, list):
str_messages.append(UserMessage(content=content_to_str(message.content), source=message.source))
else:
str_messages.append(message)
return str_messages