Making sure multimodal feature support i18n

This commit is contained in:
João Moura
2024-12-27 15:56:13 -03:00
parent d56db9f34f
commit 8735b58fc6
4 changed files with 15 additions and 8 deletions

View File

@@ -147,7 +147,7 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
# Directly append the result to the messages if the # Directly append the result to the messages if the
# tool is "Add image to content" in case of multimodal # tool is "Add image to content" in case of multimodal
# agents # agents
if formatted_answer.tool == "Add image to content": if formatted_answer.tool == self._i18n.tools("add_image")["name"]:
self.messages.append(tool_result.result) self.messages.append(tool_result.result)
continue continue

View File

@@ -725,7 +725,7 @@ class Crew(BaseModel):
) )
# Determine which tools to use - task tools take precedence over agent tools # Determine which tools to use - task tools take precedence over agent tools
tools_for_task = task.tools if task.tools else agent_to_use.tools or [] tools_for_task = task.tools or agent_to_use.tools or []
tools_for_task = self._prepare_tools( tools_for_task = self._prepare_tools(
agent_to_use, agent_to_use,
task, task,
@@ -871,7 +871,6 @@ class Crew(BaseModel):
tools = self._inject_delegation_tools(tools, task.agent, [task.agent]) tools = self._inject_delegation_tools(tools, task.agent, [task.agent])
else: else:
tools = self._inject_delegation_tools(tools, self.manager_agent, self.agents) tools = self._inject_delegation_tools(tools, self.manager_agent, self.agents)
# self.manager_agent.tools = tools
return tools return tools
def _get_context(self, task: Task, task_outputs: List[TaskOutput]): def _get_context(self, task: Task, task_outputs: List[TaskOutput]):

View File

@@ -1,11 +1,13 @@
from crewai.tools.base_tool import BaseTool from crewai.tools.base_tool import BaseTool
from crewai.utilities import I18N
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
i18n = I18N()
class AddImageToolSchema(BaseModel): class AddImageToolSchema(BaseModel):
image_url: str = Field(..., description="The URL or path of the image to add") image_url: str = Field(..., description="The URL or path of the image to add")
action: str = Field( action: str = Field(
default="Please provide a detailed description of this image, including all visual elements, context, and any notable details you can observe.", default=None,
description="Optional context or question about the image" description="Optional context or question about the image"
) )
@@ -13,16 +15,17 @@ class AddImageToolSchema(BaseModel):
class AddImageTool(BaseTool): class AddImageTool(BaseTool):
"""Tool for adding images to the content""" """Tool for adding images to the content"""
name: str = "Add image to content" name: str = Field(default_factory=lambda: i18n.tools("add_image")["name"])
description: str = "See image to understand it's content, you can optionally ask a question about the image" description: str = Field(default_factory=lambda: i18n.tools("add_image")["description"])
args_schema: type[BaseModel] = AddImageToolSchema args_schema: type[BaseModel] = AddImageToolSchema
def _run( def _run(
self, self,
image_url: str, image_url: str,
action: str = "Please provide a detailed description of this image, including all visual elements, context, and any notable details you can observe.", action: str = None,
**kwargs, **kwargs,
) -> dict: ) -> dict:
action = action or i18n.tools("add_image")["default_action"]
content = [ content = [
{"type": "text", "text": action}, {"type": "text", "text": action},
{ {

View File

@@ -37,6 +37,11 @@
}, },
"tools": { "tools": {
"delegate_work": "Delegate a specific task to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the task you want them to do, and ALL necessary context to execute the task, they know nothing about the task, so share absolute everything you know, don't reference things but instead explain them.", "delegate_work": "Delegate a specific task to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the task you want them to do, and ALL necessary context to execute the task, they know nothing about the task, so share absolute everything you know, don't reference things but instead explain them.",
"ask_question": "Ask a specific question to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the question you have for them, and ALL necessary context to ask the question properly, they know nothing about the question, so share absolute everything you know, don't reference things but instead explain them." "ask_question": "Ask a specific question to one of the following coworkers: {coworkers}\nThe input to this tool should be the coworker, the question you have for them, and ALL necessary context to ask the question properly, they know nothing about the question, so share absolute everything you know, don't reference things but instead explain them.",
"add_image": {
"name": "Add image to content",
"description": "See image to understand it's content, you can optionally ask a question about the image",
"default_action": "Please provide a detailed description of this image, including all visual elements, context, and any notable details you can observe."
}
} }
} }