mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 23:58:34 +00:00
46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
from typing import Any, ClassVar
|
|
|
|
from langchain.prompts import BasePromptTemplate, PromptTemplate
|
|
from pydantic import BaseModel, Field
|
|
|
|
from crewai.utilities import I18N
|
|
|
|
|
|
class Prompts(BaseModel):
|
|
"""Manages and generates prompts for a generic agent with support for different languages."""
|
|
|
|
i18n: I18N = Field(default=I18N())
|
|
tools: list[Any] = Field(default=[])
|
|
SCRATCHPAD_SLICE: ClassVar[str] = "\n{agent_scratchpad}"
|
|
|
|
def task_execution_with_memory(self) -> BasePromptTemplate:
|
|
"""Generate a prompt for task execution with memory components."""
|
|
slices = ["role_playing"]
|
|
if len(self.tools) > 0:
|
|
slices.append("tools")
|
|
else:
|
|
slices.append("no_tools")
|
|
slices.extend(["memory", "task"])
|
|
return self._build_prompt(slices)
|
|
|
|
def task_execution_without_tools(self) -> BasePromptTemplate:
|
|
"""Generate a prompt for task execution without tools components."""
|
|
return self._build_prompt(["role_playing", "task"])
|
|
|
|
def task_execution(self) -> BasePromptTemplate:
|
|
"""Generate a standard prompt for task execution."""
|
|
slices = ["role_playing"]
|
|
if len(self.tools) > 0:
|
|
slices.append("tools")
|
|
else:
|
|
slices.append("no_tools")
|
|
slices.append("task")
|
|
return self._build_prompt(slices)
|
|
|
|
def _build_prompt(self, components: list[str]) -> BasePromptTemplate:
|
|
"""Constructs a prompt string from specified components."""
|
|
prompt_parts = [self.i18n.slice(component) for component in components]
|
|
prompt_parts.append(self.SCRATCHPAD_SLICE)
|
|
prompt = PromptTemplate.from_template("".join(prompt_parts))
|
|
return prompt
|