mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 15:48:29 +00:00
feat: implement knowledge retrieval events in Agent
This commit introduces a series of knowledge retrieval events in the Agent class, enhancing its ability to handle knowledge queries. New events include KnowledgeRetrievalStartedEvent, KnowledgeRetrievalCompletedEvent, KnowledgeQueryGeneratedEvent, KnowledgeQueryFailedEvent, and KnowledgeSearchQueryCompletedEvent. The Agent now emits these events during knowledge retrieval processes, allowing for better tracking and handling of knowledge queries. Additionally, the console formatter has been updated to handle these new events, providing visual feedback during knowledge retrieval operations.
This commit is contained in:
@@ -31,6 +31,14 @@ from crewai.utilities.events.agent_events import (
|
||||
AgentExecutionStartedEvent,
|
||||
)
|
||||
from crewai.utilities.events.crewai_event_bus import crewai_event_bus
|
||||
from crewai.utilities.events.knowledge_events import (
|
||||
KnowledgeQueryCompletedEvent,
|
||||
KnowledgeQueryFailedEvent,
|
||||
KnowledgeQueryGeneratedEvent,
|
||||
KnowledgeRetrievalCompletedEvent,
|
||||
KnowledgeRetrievalStartedEvent,
|
||||
KnowledgeSearchQueryFailedEvent,
|
||||
)
|
||||
from crewai.utilities.llm_utils import create_llm
|
||||
from crewai.utilities.token_counter_callback import TokenCalcHandler
|
||||
from crewai.utilities.training_handler import CrewTrainingHandler
|
||||
@@ -122,6 +130,10 @@ class Agent(BaseAgent):
|
||||
default=None,
|
||||
description="Knowledge context for the crew.",
|
||||
)
|
||||
knowledge_search_query: Optional[str] = Field(
|
||||
default=None,
|
||||
description="Knowledge search query for the agent dynamically generated by the agent.",
|
||||
)
|
||||
|
||||
@model_validator(mode="after")
|
||||
def post_init_setup(self):
|
||||
@@ -185,7 +197,7 @@ class Agent(BaseAgent):
|
||||
self,
|
||||
task: Task,
|
||||
context: Optional[str] = None,
|
||||
tools: Optional[List[BaseTool]] = None
|
||||
tools: Optional[List[BaseTool]] = None,
|
||||
) -> str:
|
||||
"""Execute a task with the agent.
|
||||
|
||||
@@ -245,27 +257,55 @@ class Agent(BaseAgent):
|
||||
knowledge_config = (
|
||||
self.knowledge_config.model_dump() if self.knowledge_config else {}
|
||||
)
|
||||
if self.knowledge:
|
||||
agent_knowledge_snippets = self.knowledge.query(
|
||||
[task.prompt()], **knowledge_config
|
||||
)
|
||||
if agent_knowledge_snippets:
|
||||
self.agent_knowledge_context = extract_knowledge_context(
|
||||
agent_knowledge_snippets
|
||||
)
|
||||
if self.agent_knowledge_context:
|
||||
task_prompt += self.agent_knowledge_context
|
||||
|
||||
if self.crew:
|
||||
knowledge_snippets = self.crew.query_knowledge(
|
||||
[task.prompt()], **knowledge_config
|
||||
if self.knowledge:
|
||||
crewai_event_bus.emit(
|
||||
self,
|
||||
event=KnowledgeRetrievalStartedEvent(
|
||||
agent=self,
|
||||
),
|
||||
)
|
||||
if knowledge_snippets:
|
||||
self.crew_knowledge_context = extract_knowledge_context(
|
||||
knowledge_snippets
|
||||
try:
|
||||
self.knowledge_search_query = self._get_knowledge_search_query(
|
||||
task_prompt
|
||||
)
|
||||
if self.knowledge_search_query:
|
||||
agent_knowledge_snippets = self.knowledge.query(
|
||||
[self.knowledge_search_query], **knowledge_config
|
||||
)
|
||||
if agent_knowledge_snippets:
|
||||
self.agent_knowledge_context = extract_knowledge_context(
|
||||
agent_knowledge_snippets
|
||||
)
|
||||
if self.agent_knowledge_context:
|
||||
task_prompt += self.agent_knowledge_context
|
||||
if self.crew:
|
||||
knowledge_snippets = self.crew.query_knowledge(
|
||||
[self.knowledge_search_query], **knowledge_config
|
||||
)
|
||||
if knowledge_snippets:
|
||||
self.crew_knowledge_context = extract_knowledge_context(
|
||||
knowledge_snippets
|
||||
)
|
||||
if self.crew_knowledge_context:
|
||||
task_prompt += self.crew_knowledge_context
|
||||
|
||||
crewai_event_bus.emit(
|
||||
self,
|
||||
event=KnowledgeRetrievalCompletedEvent(
|
||||
query=self.knowledge_search_query,
|
||||
agent=self,
|
||||
),
|
||||
)
|
||||
except Exception as e:
|
||||
crewai_event_bus.emit(
|
||||
self,
|
||||
event=KnowledgeSearchQueryFailedEvent(
|
||||
query=self.knowledge_search_query or "",
|
||||
agent=self,
|
||||
error=str(e),
|
||||
),
|
||||
)
|
||||
if self.crew_knowledge_context:
|
||||
task_prompt += self.crew_knowledge_context
|
||||
|
||||
tools = tools or self.tools or []
|
||||
self.create_agent_executor(tools=tools, task=task)
|
||||
@@ -288,12 +328,19 @@ class Agent(BaseAgent):
|
||||
|
||||
# Determine execution method based on timeout setting
|
||||
if self.max_execution_time is not None:
|
||||
if not isinstance(self.max_execution_time, int) or self.max_execution_time <= 0:
|
||||
raise ValueError("Max Execution time must be a positive integer greater than zero")
|
||||
result = self._execute_with_timeout(task_prompt, task, self.max_execution_time)
|
||||
if (
|
||||
not isinstance(self.max_execution_time, int)
|
||||
or self.max_execution_time <= 0
|
||||
):
|
||||
raise ValueError(
|
||||
"Max Execution time must be a positive integer greater than zero"
|
||||
)
|
||||
result = self._execute_with_timeout(
|
||||
task_prompt, task, self.max_execution_time
|
||||
)
|
||||
else:
|
||||
result = self._execute_without_timeout(task_prompt, task)
|
||||
|
||||
|
||||
except TimeoutError as e:
|
||||
# Propagate TimeoutError without retry
|
||||
crewai_event_bus.emit(
|
||||
@@ -345,54 +392,46 @@ class Agent(BaseAgent):
|
||||
)
|
||||
return result
|
||||
|
||||
def _execute_with_timeout(
|
||||
self,
|
||||
task_prompt: str,
|
||||
task: Task,
|
||||
timeout: int
|
||||
) -> str:
|
||||
def _execute_with_timeout(self, task_prompt: str, task: Task, timeout: int) -> str:
|
||||
"""Execute a task with a timeout.
|
||||
|
||||
|
||||
Args:
|
||||
task_prompt: The prompt to send to the agent.
|
||||
task: The task being executed.
|
||||
timeout: Maximum execution time in seconds.
|
||||
|
||||
|
||||
Returns:
|
||||
The output of the agent.
|
||||
|
||||
|
||||
Raises:
|
||||
TimeoutError: If execution exceeds the timeout.
|
||||
RuntimeError: If execution fails for other reasons.
|
||||
"""
|
||||
import concurrent.futures
|
||||
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
future = executor.submit(
|
||||
self._execute_without_timeout,
|
||||
task_prompt=task_prompt,
|
||||
task=task
|
||||
self._execute_without_timeout, task_prompt=task_prompt, task=task
|
||||
)
|
||||
|
||||
|
||||
try:
|
||||
return future.result(timeout=timeout)
|
||||
except concurrent.futures.TimeoutError:
|
||||
future.cancel()
|
||||
raise TimeoutError(f"Task '{task.description}' execution timed out after {timeout} seconds. Consider increasing max_execution_time or optimizing the task.")
|
||||
raise TimeoutError(
|
||||
f"Task '{task.description}' execution timed out after {timeout} seconds. Consider increasing max_execution_time or optimizing the task."
|
||||
)
|
||||
except Exception as e:
|
||||
future.cancel()
|
||||
raise RuntimeError(f"Task execution failed: {str(e)}")
|
||||
|
||||
def _execute_without_timeout(
|
||||
self,
|
||||
task_prompt: str,
|
||||
task: Task
|
||||
) -> str:
|
||||
def _execute_without_timeout(self, task_prompt: str, task: Task) -> str:
|
||||
"""Execute a task without a timeout.
|
||||
|
||||
|
||||
Args:
|
||||
task_prompt: The prompt to send to the agent.
|
||||
task: The task being executed.
|
||||
|
||||
|
||||
Returns:
|
||||
The output of the agent.
|
||||
"""
|
||||
@@ -560,6 +599,60 @@ class Agent(BaseAgent):
|
||||
def set_fingerprint(self, fingerprint: Fingerprint):
|
||||
self.security_config.fingerprint = fingerprint
|
||||
|
||||
def _get_knowledge_search_query(self, task_prompt: str) -> str | None:
|
||||
"""Generate a search query for the knowledge base based on the task description."""
|
||||
crewai_event_bus.emit(
|
||||
self,
|
||||
event=KnowledgeQueryGeneratedEvent(
|
||||
task_prompt=task_prompt,
|
||||
agent=self,
|
||||
),
|
||||
)
|
||||
query = self.i18n.slice("knowledge_search_query").format(
|
||||
task_prompt=task_prompt
|
||||
)
|
||||
system_prompt = self.i18n.slice("knowledge_search_query_system_prompt")
|
||||
if isinstance(self.llm, BaseLLM):
|
||||
try:
|
||||
query_converted = self.llm.call(
|
||||
[
|
||||
{
|
||||
"role": "system",
|
||||
"content": system_prompt,
|
||||
},
|
||||
{"role": "user", "content": query},
|
||||
]
|
||||
)
|
||||
query_rewritten = self.llm.call(
|
||||
[
|
||||
{
|
||||
"role": "system",
|
||||
"content": system_prompt,
|
||||
},
|
||||
{"role": "user", "content": query_converted},
|
||||
]
|
||||
)
|
||||
crewai_event_bus.emit(
|
||||
self,
|
||||
event=KnowledgeQueryCompletedEvent(
|
||||
query=query,
|
||||
agent=self,
|
||||
),
|
||||
)
|
||||
return query_rewritten
|
||||
except Exception as e:
|
||||
crewai_event_bus.emit(
|
||||
self,
|
||||
event=KnowledgeQueryFailedEvent(
|
||||
query=query,
|
||||
agent=self,
|
||||
error=str(e),
|
||||
),
|
||||
)
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
|
||||
def kickoff(
|
||||
self,
|
||||
messages: Union[str, List[Dict[str, str]]],
|
||||
|
||||
@@ -27,7 +27,9 @@
|
||||
"feedback_instructions": "User feedback: {feedback}\nInstructions: Use this feedback to enhance the next output iteration.\nNote: Do not respond or add commentary.",
|
||||
"lite_agent_system_prompt_with_tools": "You are {role}. {backstory}\nYour personal goal is: {goal}\n\nYou ONLY have access to the following tools, and should NEVER make up tools that are not listed here:\n\n{tools}\n\nIMPORTANT: Use the following format in your response:\n\n```\nThought: you should always think about what to do\nAction: the action to take, only one name of [{tool_names}], just the name, exactly as it's written.\nAction Input: the input to the action, just a simple JSON object, enclosed in curly braces, using \" to wrap keys and values.\nObservation: the result of the action\n```\n\nOnce all necessary information is gathered, return the following format:\n\n```\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n```",
|
||||
"lite_agent_system_prompt_without_tools": "You are {role}. {backstory}\nYour personal goal is: {goal}\n\nTo give my best complete final answer to the task respond using the exact following format:\n\nThought: I now can give a great answer\nFinal Answer: Your final answer must be the great and the most complete as possible, it must be outcome described.\n\nI MUST use these formats, my job depends on it!",
|
||||
"lite_agent_response_format": "\nIMPORTANT: Your final answer MUST contain all the information requested in the following format: {response_format}\n\nIMPORTANT: Ensure the final output does not include any code block markers like ```json or ```python."
|
||||
"lite_agent_response_format": "\nIMPORTANT: Your final answer MUST contain all the information requested in the following format: {response_format}\n\nIMPORTANT: Ensure the final output does not include any code block markers like ```json or ```python.",
|
||||
"knowledge_search_query": "Rewrite the following user query to optimize it for retrieval from a vector database. The original query is: {task_prompt}.",
|
||||
"knowledge_search_query_system_prompt": "Your goal is to rewrite the user query to optimize it for retrieval from a vector database. Consider how the query will be used to find relevant documents, and aim to make it more specific and context-aware. Do not include any other text than the rewritten query, especially any preamble or postamble and only add expected output format if its relevant to the rewritten query. Focus on the key words of the intended task and to retrieve the most relevant information from the vector database."
|
||||
},
|
||||
"errors": {
|
||||
"force_final_answer_error": "You can't keep going, here is the best final answer you generated:\n\n {formatted_answer}",
|
||||
@@ -50,4 +52,4 @@
|
||||
"default_action": "Please provide a detailed description of this image, including all visual elements, context, and any notable details you can observe."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,14 @@ from crewai.telemetry.telemetry import Telemetry
|
||||
from crewai.utilities import Logger
|
||||
from crewai.utilities.constants import EMITTER_COLOR
|
||||
from crewai.utilities.events.base_event_listener import BaseEventListener
|
||||
from crewai.utilities.events.knowledge_events import (
|
||||
KnowledgeQueryCompletedEvent,
|
||||
KnowledgeQueryFailedEvent,
|
||||
KnowledgeQueryGeneratedEvent,
|
||||
KnowledgeRetrievalCompletedEvent,
|
||||
KnowledgeRetrievalStartedEvent,
|
||||
KnowledgeSearchQueryFailedEvent,
|
||||
)
|
||||
from crewai.utilities.events.llm_events import (
|
||||
LLMCallCompletedEvent,
|
||||
LLMCallFailedEvent,
|
||||
@@ -342,5 +350,56 @@ class EventListener(BaseEventListener):
|
||||
def on_crew_test_failed(source, event: CrewTestFailedEvent):
|
||||
self.formatter.handle_crew_test_failed(event.crew_name or "Crew")
|
||||
|
||||
@crewai_event_bus.on(KnowledgeRetrievalStartedEvent)
|
||||
def on_knowledge_retrieval_started(
|
||||
source, event: KnowledgeRetrievalStartedEvent
|
||||
):
|
||||
self.formatter.handle_knowledge_retrieval_started(
|
||||
self.formatter.current_agent_branch,
|
||||
self.formatter.current_crew_tree,
|
||||
)
|
||||
|
||||
@crewai_event_bus.on(KnowledgeRetrievalCompletedEvent)
|
||||
def on_knowledge_retrieval_completed(
|
||||
source, event: KnowledgeRetrievalCompletedEvent
|
||||
):
|
||||
self.formatter.handle_knowledge_retrieval_completed(
|
||||
self.formatter.current_agent_branch,
|
||||
self.formatter.current_crew_tree,
|
||||
)
|
||||
|
||||
@crewai_event_bus.on(KnowledgeQueryGeneratedEvent)
|
||||
def on_knowledge_query_generated(source, event: KnowledgeQueryGeneratedEvent):
|
||||
self.formatter.handle_knowledge_query_generated(
|
||||
self.formatter.current_agent_branch,
|
||||
event.task_prompt,
|
||||
self.formatter.current_crew_tree,
|
||||
)
|
||||
|
||||
@crewai_event_bus.on(KnowledgeQueryFailedEvent)
|
||||
def on_knowledge_query_failed(source, event: KnowledgeQueryFailedEvent):
|
||||
self.formatter.handle_knowledge_query_failed(
|
||||
self.formatter.current_agent_branch,
|
||||
event.error,
|
||||
self.formatter.current_crew_tree,
|
||||
)
|
||||
|
||||
@crewai_event_bus.on(KnowledgeQueryCompletedEvent)
|
||||
def on_knowledge_query_completed(source, event: KnowledgeQueryCompletedEvent):
|
||||
self.formatter.handle_knowledge_query_completed(
|
||||
self.formatter.current_agent_branch,
|
||||
self.formatter.current_crew_tree,
|
||||
)
|
||||
|
||||
@crewai_event_bus.on(KnowledgeSearchQueryFailedEvent)
|
||||
def on_knowledge_search_query_failed(
|
||||
source, event: KnowledgeSearchQueryFailedEvent
|
||||
):
|
||||
self.formatter.handle_knowledge_search_query_failed(
|
||||
self.formatter.current_agent_branch,
|
||||
event.error,
|
||||
self.formatter.current_crew_tree,
|
||||
)
|
||||
|
||||
|
||||
event_listener = EventListener()
|
||||
|
||||
56
src/crewai/utilities/events/knowledge_events.py
Normal file
56
src/crewai/utilities/events/knowledge_events.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from crewai.agents.agent_builder.base_agent import BaseAgent
|
||||
from crewai.utilities.events.base_events import BaseEvent
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from crewai.agents.agent_builder.base_agent import BaseAgent
|
||||
|
||||
|
||||
class KnowledgeRetrievalStartedEvent(BaseEvent):
|
||||
"""Event emitted when a knowledge retrieval is started."""
|
||||
|
||||
type: str = "knowledge_search_query_started"
|
||||
agent: BaseAgent
|
||||
|
||||
|
||||
class KnowledgeRetrievalCompletedEvent(BaseEvent):
|
||||
"""Event emitted when a knowledge retrieval is completed."""
|
||||
|
||||
query: str
|
||||
type: str = "knowledge_search_query_completed"
|
||||
agent: BaseAgent
|
||||
|
||||
|
||||
class KnowledgeQueryGeneratedEvent(BaseEvent):
|
||||
"""Event emitted when a knowledge query is generated."""
|
||||
|
||||
task_prompt: str
|
||||
type: str = "knowledge_query_generated"
|
||||
agent: BaseAgent
|
||||
|
||||
|
||||
class KnowledgeQueryFailedEvent(BaseEvent):
|
||||
"""Event emitted when a knowledge query fails."""
|
||||
|
||||
query: str
|
||||
type: str = "knowledge_query_failed"
|
||||
agent: BaseAgent
|
||||
error: str
|
||||
|
||||
|
||||
class KnowledgeQueryCompletedEvent(BaseEvent):
|
||||
"""Event emitted when a knowledge query is completed."""
|
||||
|
||||
query: str
|
||||
type: str = "knowledge_query_completed"
|
||||
agent: BaseAgent
|
||||
|
||||
|
||||
class KnowledgeSearchQueryFailedEvent(BaseEvent):
|
||||
"""Event emitted when a knowledge search query fails."""
|
||||
|
||||
query: str
|
||||
type: str = "knowledge_search_query_failed"
|
||||
agent: BaseAgent
|
||||
error: str
|
||||
@@ -783,3 +783,147 @@ class ConsoleFormatter:
|
||||
self.update_lite_agent_status(
|
||||
self.current_lite_agent_branch, lite_agent_role, status, **fields
|
||||
)
|
||||
|
||||
def handle_knowledge_retrieval_started(
|
||||
self,
|
||||
agent_branch: Optional[Tree],
|
||||
crew_tree: Optional[Tree],
|
||||
) -> Optional[Tree]:
|
||||
"""Handle knowledge retrieval started event."""
|
||||
if not self.verbose:
|
||||
return None
|
||||
|
||||
branch_to_use = agent_branch or self.current_lite_agent_branch
|
||||
tree_to_use = branch_to_use or crew_tree
|
||||
|
||||
if branch_to_use is None or tree_to_use is None:
|
||||
# If we don't have a valid branch, use crew_tree as the branch if available
|
||||
if crew_tree is not None:
|
||||
branch_to_use = tree_to_use = crew_tree
|
||||
else:
|
||||
return None
|
||||
|
||||
knowledge_branch = branch_to_use.add("")
|
||||
self.update_tree_label(
|
||||
knowledge_branch, "🔍", "Knowledge Retrieval Started", "blue"
|
||||
)
|
||||
|
||||
self.print(tree_to_use)
|
||||
self.print()
|
||||
return knowledge_branch
|
||||
|
||||
def handle_knowledge_retrieval_completed(
|
||||
self,
|
||||
agent_branch: Optional[Tree],
|
||||
crew_tree: Optional[Tree],
|
||||
) -> None:
|
||||
"""Handle knowledge retrieval completed event."""
|
||||
if not self.verbose:
|
||||
return None
|
||||
|
||||
branch_to_use = self.current_lite_agent_branch or agent_branch
|
||||
tree_to_use = branch_to_use or crew_tree
|
||||
|
||||
if branch_to_use is None or tree_to_use is None:
|
||||
return None
|
||||
|
||||
knowledge_branch = branch_to_use.add("")
|
||||
self.update_tree_label(
|
||||
knowledge_branch, "✅", "Knowledge Retrieval Completed", "green"
|
||||
)
|
||||
|
||||
self.print(tree_to_use)
|
||||
self.print()
|
||||
|
||||
def handle_knowledge_query_generated(
|
||||
self,
|
||||
agent_branch: Optional[Tree],
|
||||
query: str,
|
||||
crew_tree: Optional[Tree],
|
||||
) -> None:
|
||||
"""Handle knowledge query generated event."""
|
||||
if not self.verbose:
|
||||
return None
|
||||
|
||||
branch_to_use = self.current_lite_agent_branch or agent_branch
|
||||
tree_to_use = branch_to_use or crew_tree
|
||||
|
||||
if branch_to_use is None or tree_to_use is None:
|
||||
return None
|
||||
|
||||
query_branch = branch_to_use.add("")
|
||||
self.update_tree_label(query_branch, "🔎", f"Query: {query[:50]}...", "yellow")
|
||||
|
||||
self.print(tree_to_use)
|
||||
self.print()
|
||||
|
||||
def handle_knowledge_query_failed(
|
||||
self,
|
||||
agent_branch: Optional[Tree],
|
||||
error: str,
|
||||
crew_tree: Optional[Tree],
|
||||
) -> None:
|
||||
"""Handle knowledge query failed event."""
|
||||
if not self.verbose:
|
||||
return
|
||||
|
||||
tree_to_use = self.current_lite_agent_branch or crew_tree
|
||||
branch_to_use = self.current_lite_agent_branch or agent_branch
|
||||
|
||||
if branch_to_use and tree_to_use:
|
||||
query_branch = branch_to_use.add("")
|
||||
self.update_tree_label(query_branch, "❌", "Knowledge Query Failed", "red")
|
||||
self.print(tree_to_use)
|
||||
self.print()
|
||||
|
||||
# Show error panel
|
||||
error_content = self.create_status_content(
|
||||
"Knowledge Query Failed", "Query Error", "red", Error=error
|
||||
)
|
||||
self.print_panel(error_content, "Knowledge Error", "red")
|
||||
|
||||
def handle_knowledge_query_completed(
|
||||
self,
|
||||
agent_branch: Optional[Tree],
|
||||
crew_tree: Optional[Tree],
|
||||
) -> None:
|
||||
"""Handle knowledge query completed event."""
|
||||
if not self.verbose:
|
||||
return None
|
||||
|
||||
branch_to_use = self.current_lite_agent_branch or agent_branch
|
||||
tree_to_use = branch_to_use or crew_tree
|
||||
|
||||
if branch_to_use is None or tree_to_use is None:
|
||||
return None
|
||||
|
||||
query_branch = branch_to_use.add("")
|
||||
self.update_tree_label(query_branch, "✅", "Knowledge Query Completed", "green")
|
||||
|
||||
self.print(tree_to_use)
|
||||
self.print()
|
||||
|
||||
def handle_knowledge_search_query_failed(
|
||||
self,
|
||||
agent_branch: Optional[Tree],
|
||||
error: str,
|
||||
crew_tree: Optional[Tree],
|
||||
) -> None:
|
||||
"""Handle knowledge search query failed event."""
|
||||
if not self.verbose:
|
||||
return
|
||||
|
||||
tree_to_use = self.current_lite_agent_branch or crew_tree
|
||||
branch_to_use = self.current_lite_agent_branch or agent_branch
|
||||
|
||||
if branch_to_use and tree_to_use:
|
||||
query_branch = branch_to_use.add("")
|
||||
self.update_tree_label(query_branch, "❌", "Knowledge Search Failed", "red")
|
||||
self.print(tree_to_use)
|
||||
self.print()
|
||||
|
||||
# Show error panel
|
||||
error_content = self.create_status_content(
|
||||
"Knowledge Search Failed", "Search Error", "red", Error=error
|
||||
)
|
||||
self.print_panel(error_content, "Search Error", "red")
|
||||
|
||||
@@ -9,7 +9,6 @@ import pytest
|
||||
from crewai import Agent, Crew, Task
|
||||
from crewai.agents.cache import CacheHandler
|
||||
from crewai.agents.crew_agent_executor import AgentFinish, CrewAgentExecutor
|
||||
from crewai.agents.parser import CrewAgentParser, OutputParserException
|
||||
from crewai.knowledge.knowledge import Knowledge
|
||||
from crewai.knowledge.knowledge_config import KnowledgeConfig
|
||||
from crewai.knowledge.source.base_knowledge_source import BaseKnowledgeSource
|
||||
@@ -73,6 +72,7 @@ def test_agent_creation():
|
||||
assert agent.goal == "test goal"
|
||||
assert agent.backstory == "test backstory"
|
||||
|
||||
|
||||
def test_agent_with_only_system_template():
|
||||
"""Test that an agent with only system_template works without errors."""
|
||||
agent = Agent(
|
||||
@@ -88,6 +88,7 @@ def test_agent_with_only_system_template():
|
||||
assert agent.goal == "Test Goal"
|
||||
assert agent.backstory == "Test Backstory"
|
||||
|
||||
|
||||
def test_agent_with_only_prompt_template():
|
||||
"""Test that an agent with only system_template works without errors."""
|
||||
agent = Agent(
|
||||
@@ -119,7 +120,8 @@ def test_agent_with_missing_response_template():
|
||||
assert agent.role == "Test Role"
|
||||
assert agent.goal == "Test Goal"
|
||||
assert agent.backstory == "Test Backstory"
|
||||
|
||||
|
||||
|
||||
def test_agent_default_values():
|
||||
agent = Agent(role="test role", goal="test goal", backstory="test backstory")
|
||||
assert agent.llm.model == "gpt-4o-mini"
|
||||
@@ -1803,6 +1805,42 @@ def test_agent_with_knowledge_sources_works_with_copy():
|
||||
assert isinstance(agent_copy.llm, LLM)
|
||||
|
||||
|
||||
@pytest.mark.vcr(filter_headers=["authorization"])
|
||||
def test_agent_with_knowledge_sources_generate_search_query():
|
||||
content = "Brandon's favorite color is red and he likes Mexican food."
|
||||
string_source = StringKnowledgeSource(content=content)
|
||||
|
||||
with patch(
|
||||
"crewai.knowledge.storage.knowledge_storage.KnowledgeStorage"
|
||||
) as MockKnowledge:
|
||||
mock_knowledge_instance = MockKnowledge.return_value
|
||||
mock_knowledge_instance.sources = [string_source]
|
||||
mock_knowledge_instance.query.return_value = [{"content": content}]
|
||||
|
||||
agent = Agent(
|
||||
role="Information Agent with extensive role description that is longer than 80 characters",
|
||||
goal="Provide information based on knowledge sources",
|
||||
backstory="You have access to specific knowledge sources.",
|
||||
llm=LLM(model="gpt-4o-mini"),
|
||||
knowledge_sources=[string_source],
|
||||
)
|
||||
|
||||
task = Task(
|
||||
description="What is Brandon's favorite color?",
|
||||
expected_output="The answer to the question, in a format like this: `{{name: str, favorite_color: str}}`",
|
||||
agent=agent,
|
||||
)
|
||||
|
||||
crew = Crew(agents=[agent], tasks=[task])
|
||||
result = crew.kickoff()
|
||||
|
||||
# Updated assertion to check the JSON content
|
||||
assert "Brandon" in str(agent.knowledge_search_query)
|
||||
assert "favorite_color" in str(agent.knowledge_search_query)
|
||||
|
||||
assert "red" in result.raw.lower()
|
||||
|
||||
|
||||
@pytest.mark.vcr(filter_headers=["authorization"])
|
||||
def test_litellm_auth_error_handling():
|
||||
"""Test that LiteLLM authentication errors are handled correctly and not retried."""
|
||||
|
||||
@@ -0,0 +1,832 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '{"input": ["Brandon''s favorite color is red and he likes Mexican food."],
|
||||
"model": "text-embedding-3-small", "encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate, zstd
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '137'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- arm64
|
||||
x-stainless-async:
|
||||
- 'false'
|
||||
x-stainless-lang:
|
||||
- python
|
||||
x-stainless-os:
|
||||
- MacOS
|
||||
x-stainless-package-version:
|
||||
- 1.68.2
|
||||
x-stainless-read-timeout:
|
||||
- '600'
|
||||
x-stainless-retry-count:
|
||||
- '0'
|
||||
x-stainless-runtime:
|
||||
- CPython
|
||||
x-stainless-runtime-version:
|
||||
- 3.12.9
|
||||
method: POST
|
||||
uri: https://api.openai.com/v1/embeddings
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
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
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 93848585b9ea67a4-SJC
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 30 Apr 2025 05:08:30 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=uXD0M2iZrtFplNAOzmLkmY12iIms8tRzkdrZJOiMe2s-1745989710-1.0.1.1-O36CrzgOY7CQOvagOPsDwwqZY24.VSgDm3IJaLX6tDBvEX.2.Lpk8Jb.oLVaCm7_lE8UxHFTaRz2RcTcx_xsFWfME3z2CxEE6ca1Q7gXP.k;
|
||||
path=/; expires=Wed, 30-Apr-25 05:38:30 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=IDoLY6ItTt5IVsLUOzNxHsy4VhLUffRhv6KOlK9LPrs-1745989710042-0.0.1.1-604800000;
|
||||
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
access-control-expose-headers:
|
||||
- X-Request-ID
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
openai-model:
|
||||
- text-embedding-3-small
|
||||
openai-organization:
|
||||
- crewai-iuxna1
|
||||
openai-processing-ms:
|
||||
- '193'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-7bc67cd575-c6cxb
|
||||
x-envoy-upstream-service-time:
|
||||
- '207'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999986'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_9ba501f1200ee4ed93ab35f57ed72e10
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"messages": [{"role": "system", "content": "Your goal is to rewrite the
|
||||
user query to optimize it for retrieval from a vector database. Consider how
|
||||
the query will be used to find relevant documents, and aim to make it more specific
|
||||
and context-aware. Do not include any other text than the rewritten query,
|
||||
especially any preamble or postamble and only add expected output format if
|
||||
its relevant to the rewritten query. Focus on the key words of the intended
|
||||
task and to retrieve the most relevant information from the vector database."},
|
||||
{"role": "user", "content": "Rewrite the following user query to optimize it
|
||||
for retrieval from a vector database. The original query is: What is Brandon''s
|
||||
favorite color?\n\nThis is the expected criteria for your final answer: The
|
||||
answer to the question, in a format like this: `{{name: str, favorite_color:
|
||||
str}}`\nyou MUST return the actual complete content as the final answer, not
|
||||
a summary.."}], "model": "gpt-4o-mini", "stop": ["\nObservation:"]}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate, zstd
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '995'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- arm64
|
||||
x-stainless-async:
|
||||
- 'false'
|
||||
x-stainless-lang:
|
||||
- python
|
||||
x-stainless-os:
|
||||
- MacOS
|
||||
x-stainless-package-version:
|
||||
- 1.68.2
|
||||
x-stainless-raw-response:
|
||||
- 'true'
|
||||
x-stainless-read-timeout:
|
||||
- '600.0'
|
||||
x-stainless-retry-count:
|
||||
- '0'
|
||||
x-stainless-runtime:
|
||||
- CPython
|
||||
x-stainless-runtime-version:
|
||||
- 3.12.9
|
||||
method: POST
|
||||
uri: https://api.openai.com/v1/chat/completions
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAAAwAAAP//jJJBj9MwEIXv+RXWnBvU7Bba5oK0CKQVEhJcKNBVNLUnqcHxWLazoqry
|
||||
35GT0mRhkbjkMN+8lzczPmdCgFZQCpBHjLJ1Jr/7FE/3b+yH09ePX3bvdLH9vLu/3e1qfIvvERZJ
|
||||
wYfvJONv1QvJrTMUNdsRS08YKbkW69XL7Wa7LpYDaFmRSbLGxXzFeautzm+WN6t8uc6LzUV9ZC0p
|
||||
QCm+ZUIIcR6+KadV9BNKMXgNlZZCwIagvDYJAZ5NqgCGoENEG2ExQck2kh2in88WWyrFHu48WsV2
|
||||
DwtR4yN7HamSbNgn+HoPfT+38FR3AdMYtjNmBtBajpjWMIR/uJD+Gtdw4zwfwh9SqLXV4Vh5wsA2
|
||||
RQuRHQy0z4R4GNbSPZkUnOfWxSryDxp+V2xuRz+YrjGjqwuMHNHM6tv14hm/SlFEbcJssSBRHklN
|
||||
0ukK2CnNM5DNpv47zXPe4+TaNv9jPwEpyUVSlfOktHw68dTmKT3Wf7VdtzwEhkD+UUuqoiafLqGo
|
||||
xs6MTwjCKURqq1rbhrzzenxHtavUASW+Wqp6CVmf/QIAAP//AwB9yC3bVQMAAA==
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 938485884d189e59-SJC
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 30 Apr 2025 05:08:33 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=08m8MhgTPUTzGZSjfuEEZqvfTHGcJBaZiPUXC33iUMM-1745989713-1.0.1.1-vTboBOpkmbTT.o8Uzg1fkeAgsbgEZUOiNwD_k4wtNM0YGFIUfx0CkxLIOVNI_cTwJHvfaX9l6i1mbFbyiKALpF177NqJs9ftnepybQJkVbs;
|
||||
path=/; expires=Wed, 30-Apr-25 05:38:33 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=X40dgl2pCtIqXQTr5IE.7edzt76pEPTYItHwL04fTd4-1745989713275-0.0.1.1-604800000;
|
||||
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-expose-headers:
|
||||
- X-Request-ID
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
openai-organization:
|
||||
- crewai-iuxna1
|
||||
openai-processing-ms:
|
||||
- '3051'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-envoy-upstream-service-time:
|
||||
- '3054'
|
||||
x-ratelimit-limit-requests:
|
||||
- '30000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '29999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999782'
|
||||
x-ratelimit-reset-requests:
|
||||
- 2ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_bc86630dba0ead518244b3f416224ad0
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: !!binary |
|
||||
CvINCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSyQ0KEgoQY3Jld2FpLnRl
|
||||
bGVtZXRyeRKvCQoQAd3nCcO7A7lXMRwGNgDjwRII7Q7ziUKZlCYqDENyZXcgQ3JlYXRlZDABOWgH
|
||||
duBjADsYQUArf+BjADsYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTE3LjFKGgoOcHl0aG9uX3Zl
|
||||
cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDc4OTc3N2FlOTAyMTYzMjIxNzM5YjNiNzQ1
|
||||
ZGU1N2YySjEKB2NyZXdfaWQSJgokMmJjNDdkY2ItNWQwOS00NDBjLWExMzMtNzVmZmFhZDU5NDc4
|
||||
ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3
|
||||
X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUo6ChBjcmV3
|
||||
X2ZpbmdlcnByaW50EiYKJGFkNjBiODcwLWQ4YmQtNGY4My04YjRkLTZkYjcwMjdlY2Q0Yko7Chtj
|
||||
cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yOVQyMjowODoyOS41MDI0NjBK
|
||||
mgMKC2NyZXdfYWdlbnRzEooDCocDW3sia2V5IjogImE5NmE0MjIzNWNlNDNkYmQ4MDc3NGViMjg4
|
||||
YTczNzM1IiwgImlkIjogIjBhMzJiZTRkLWFmMDAtNDYyZi1iOGMwLWE3M2RiNjIyMjgzYiIsICJy
|
||||
b2xlIjogIkluZm9ybWF0aW9uIEFnZW50IHdpdGggZXh0ZW5zaXZlIHJvbGUgZGVzY3JpcHRpb24g
|
||||
dGhhdCBpcyBsb25nZXIgdGhhbiA4MCBjaGFyYWN0ZXJzIiwgInZlcmJvc2U/IjogZmFsc2UsICJt
|
||||
YXhfaXRlciI6IDI1LCAibWF4X3JwbSI6IG51bGwsICJmdW5jdGlvbl9jYWxsaW5nX2xsbSI6ICIi
|
||||
LCAibGxtIjogImdwdC00by1taW5pIiwgImRlbGVnYXRpb25fZW5hYmxlZD8iOiBmYWxzZSwgImFs
|
||||
bG93X2NvZGVfZXhlY3V0aW9uPyI6IGZhbHNlLCAibWF4X3JldHJ5X2xpbWl0IjogMiwgInRvb2xz
|
||||
X25hbWVzIjogW119XUrIAgoKY3Jld190YXNrcxK5Agq2Alt7ImtleSI6ICI5ZmM0ZjZlNWFmMmJi
|
||||
YWZkNDU2NjE0N2RhZTg3MjZlMyIsICJpZCI6ICJhOTIxMzY1Ny1kOGUzLTRjNGYtOTczNy0yYjI2
|
||||
ZDkzNjIyYzkiLCAiYXN5bmNfZXhlY3V0aW9uPyI6IGZhbHNlLCAiaHVtYW5faW5wdXQ/IjogZmFs
|
||||
c2UsICJhZ2VudF9yb2xlIjogIkluZm9ybWF0aW9uIEFnZW50IHdpdGggZXh0ZW5zaXZlIHJvbGUg
|
||||
ZGVzY3JpcHRpb24gdGhhdCBpcyBsb25nZXIgdGhhbiA4MCBjaGFyYWN0ZXJzIiwgImFnZW50X2tl
|
||||
eSI6ICJhOTZhNDIyMzVjZTQzZGJkODA3NzRlYjI4OGE3MzczNSIsICJ0b29sc19uYW1lcyI6IFtd
|
||||
fV16AhgBhQEAAQAAEoAEChBMFBaIJt+8jsd6a1eqN3sbEgg+0iPIT4FEeioMVGFzayBDcmVhdGVk
|
||||
MAE5wPoJAWQAOxhBCOkKAWQAOxhKLgoIY3Jld19rZXkSIgogNzg5Nzc3YWU5MDIxNjMyMjE3Mzli
|
||||
M2I3NDVkZTU3ZjJKMQoHY3Jld19pZBImCiQyYmM0N2RjYi01ZDA5LTQ0MGMtYTEzMy03NWZmYWFk
|
||||
NTk0NzhKLgoIdGFza19rZXkSIgogOWZjNGY2ZTVhZjJiYmFmZDQ1NjYxNDdkYWU4NzI2ZTNKMQoH
|
||||
dGFza19pZBImCiRhOTIxMzY1Ny1kOGUzLTRjNGYtOTczNy0yYjI2ZDkzNjIyYzlKOgoQY3Jld19m
|
||||
aW5nZXJwcmludBImCiRhZDYwYjg3MC1kOGJkLTRmODMtOGI0ZC02ZGI3MDI3ZWNkNGJKOgoQdGFz
|
||||
a19maW5nZXJwcmludBImCiQ3ZTEzMDc3YS05ZjU3LTRmMDgtOGZiMC02YmU4ZTJmNDYzOThKOwob
|
||||
dGFza19maW5nZXJwcmludF9jcmVhdGVkX2F0EhwKGjIwMjUtMDQtMjlUMjI6MDg6MjkuNTAyNDIw
|
||||
SjsKEWFnZW50X2ZpbmdlcnByaW50EiYKJGE5ZmMzMDdiLTU0OWItNGIxOS05MjM3LTY2NTllZTJl
|
||||
MzRmYXoCGAGFAQABAAA=
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Accept-Encoding:
|
||||
- gzip, deflate, zstd
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '1781'
|
||||
Content-Type:
|
||||
- application/x-protobuf
|
||||
User-Agent:
|
||||
- OTel-OTLP-Exporter-Python/1.31.1
|
||||
method: POST
|
||||
uri: https://telemetry.crewai.com:4319/v1/traces
|
||||
response:
|
||||
body:
|
||||
string: "\n\0"
|
||||
headers:
|
||||
Content-Length:
|
||||
- '2'
|
||||
Content-Type:
|
||||
- application/x-protobuf
|
||||
Date:
|
||||
- Wed, 30 Apr 2025 05:08:33 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"messages": [{"role": "system", "content": "Your goal is to rewrite the
|
||||
user query to optimize it for retrieval from a vector database. Consider how
|
||||
the query will be used to find relevant documents, and aim to make it more specific
|
||||
and context-aware. Do not include any other text than the rewritten query,
|
||||
especially any preamble or postamble and only add expected output format if
|
||||
its relevant to the rewritten query. Focus on the key words of the intended
|
||||
task and to retrieve the most relevant information from the vector database."},
|
||||
{"role": "user", "content": "{{name: \"Brandon\", favorite_color: \"?\"}}"}],
|
||||
"model": "gpt-4o-mini", "stop": ["\nObservation:"]}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate, zstd
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '671'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=08m8MhgTPUTzGZSjfuEEZqvfTHGcJBaZiPUXC33iUMM-1745989713-1.0.1.1-vTboBOpkmbTT.o8Uzg1fkeAgsbgEZUOiNwD_k4wtNM0YGFIUfx0CkxLIOVNI_cTwJHvfaX9l6i1mbFbyiKALpF177NqJs9ftnepybQJkVbs;
|
||||
_cfuvid=X40dgl2pCtIqXQTr5IE.7edzt76pEPTYItHwL04fTd4-1745989713275-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- arm64
|
||||
x-stainless-async:
|
||||
- 'false'
|
||||
x-stainless-lang:
|
||||
- python
|
||||
x-stainless-os:
|
||||
- MacOS
|
||||
x-stainless-package-version:
|
||||
- 1.68.2
|
||||
x-stainless-raw-response:
|
||||
- 'true'
|
||||
x-stainless-read-timeout:
|
||||
- '600.0'
|
||||
x-stainless-retry-count:
|
||||
- '0'
|
||||
x-stainless-runtime:
|
||||
- CPython
|
||||
x-stainless-runtime-version:
|
||||
- 3.12.9
|
||||
method: POST
|
||||
uri: https://api.openai.com/v1/chat/completions
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAAA4xSwW7bMAy9+ysEnuPBbtKm8THdgB6GHQZswDAXhiLRjjZZFCQ6aBfk3wfbaex2
|
||||
HdCLYfDxPb1H8pgIAUZDIUDtJavW23T7lZ8+/7j7E798RNPow+P3b8t7cx+2W/50gEXPoN0vVPzM
|
||||
+qCo9RbZkBthFVAy9qr5enW9ud2s8+UAtKTR9rTGc7qitDXOpFfZ1SrN1ml+e2bvySiMUIifiRBC
|
||||
HIdv79NpfIRCZIvnSosxygahuDQJAYFsXwEZo4ksHcNiAhU5RjdYP5bgZIslFKKEbZBOkythIUqo
|
||||
5YGCYawUWQpjw/ArfMAaAzqFsYTTXDhg3UXZh3OdtTNAOkcs++EMkR7OyOkSwlLjA+3iKyrUxpm4
|
||||
rwLKSK43HJk8DOgpEeJhGFb3Ij/4QK3niuk3Ds/l+WbUg2lHM/TmDDKxtLP68nrxhl6lkaWxcTZu
|
||||
UFLtUU/UaTey04ZmQDJL/a+bt7TH5MY175GfAKXQM+rKB9RGvUw8tQXsT/h/bZcpD4YhYjgYhRUb
|
||||
DP0mNNays+NhQXyKjG1VG9dg8MGM11X7Su+kkjeZrjNITslfAAAA//8DAN3dDbxrAwAA
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 9384859c895f9e59-SJC
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 30 Apr 2025 05:08:34 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-expose-headers:
|
||||
- X-Request-ID
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
openai-organization:
|
||||
- crewai-iuxna1
|
||||
openai-processing-ms:
|
||||
- '537'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-envoy-upstream-service-time:
|
||||
- '542'
|
||||
x-ratelimit-limit-requests:
|
||||
- '30000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '29999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999863'
|
||||
x-ratelimit-reset-requests:
|
||||
- 2ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_3d31c0b50bb492778fc6d3a57679e063
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"input": ["{\"name\": \"Brandon\", \"favorite_color\": \"color preferences\"}"],
|
||||
"model": "text-embedding-3-small", "encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate, zstd
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '145'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=uXD0M2iZrtFplNAOzmLkmY12iIms8tRzkdrZJOiMe2s-1745989710-1.0.1.1-O36CrzgOY7CQOvagOPsDwwqZY24.VSgDm3IJaLX6tDBvEX.2.Lpk8Jb.oLVaCm7_lE8UxHFTaRz2RcTcx_xsFWfME3z2CxEE6ca1Q7gXP.k;
|
||||
_cfuvid=IDoLY6ItTt5IVsLUOzNxHsy4VhLUffRhv6KOlK9LPrs-1745989710042-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- arm64
|
||||
x-stainless-async:
|
||||
- 'false'
|
||||
x-stainless-lang:
|
||||
- python
|
||||
x-stainless-os:
|
||||
- MacOS
|
||||
x-stainless-package-version:
|
||||
- 1.68.2
|
||||
x-stainless-read-timeout:
|
||||
- '600'
|
||||
x-stainless-retry-count:
|
||||
- '0'
|
||||
x-stainless-runtime:
|
||||
- CPython
|
||||
x-stainless-runtime-version:
|
||||
- 3.12.9
|
||||
method: POST
|
||||
uri: https://api.openai.com/v1/embeddings
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
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
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 938485a15abe67a4-SJC
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 30 Apr 2025 05:08:34 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
access-control-expose-headers:
|
||||
- X-Request-ID
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
openai-model:
|
||||
- text-embedding-3-small
|
||||
openai-organization:
|
||||
- crewai-iuxna1
|
||||
openai-processing-ms:
|
||||
- '208'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-9cc7587f6-wst6z
|
||||
x-envoy-upstream-service-time:
|
||||
- '101'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999986'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_fb0903b5309b9ae32fc488f37ea282d8
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"messages": [{"role": "system", "content": "You are Information Agent
|
||||
with extensive role description that is longer than 80 characters. You have
|
||||
access to specific knowledge sources.\nYour personal goal is: Provide information
|
||||
based on knowledge sources\nTo give my best complete final answer to the task
|
||||
respond using the exact following format:\n\nThought: I now can give a great
|
||||
answer\nFinal Answer: Your final answer must be the great and the most complete
|
||||
as possible, it must be outcome described.\n\nI MUST use these formats, my job
|
||||
depends on it!"}, {"role": "user", "content": "\nCurrent Task: What is Brandon''s
|
||||
favorite color?\n\nThis is the expected criteria for your final answer: The
|
||||
answer to the question, in a format like this: `{{name: str, favorite_color:
|
||||
str}}`\nyou MUST return the actual complete content as the final answer, not
|
||||
a summary.Additional Information: Brandon''s favorite color is red and he likes
|
||||
Mexican food.\n\nBegin! This is VERY important to you, use the tools available
|
||||
and give your best Final Answer, your job depends on it!\n\nThought:"}], "model":
|
||||
"gpt-4o-mini", "stop": ["\nObservation:"]}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate, zstd
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '1136'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=08m8MhgTPUTzGZSjfuEEZqvfTHGcJBaZiPUXC33iUMM-1745989713-1.0.1.1-vTboBOpkmbTT.o8Uzg1fkeAgsbgEZUOiNwD_k4wtNM0YGFIUfx0CkxLIOVNI_cTwJHvfaX9l6i1mbFbyiKALpF177NqJs9ftnepybQJkVbs;
|
||||
_cfuvid=X40dgl2pCtIqXQTr5IE.7edzt76pEPTYItHwL04fTd4-1745989713275-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- arm64
|
||||
x-stainless-async:
|
||||
- 'false'
|
||||
x-stainless-lang:
|
||||
- python
|
||||
x-stainless-os:
|
||||
- MacOS
|
||||
x-stainless-package-version:
|
||||
- 1.68.2
|
||||
x-stainless-raw-response:
|
||||
- 'true'
|
||||
x-stainless-read-timeout:
|
||||
- '600.0'
|
||||
x-stainless-retry-count:
|
||||
- '0'
|
||||
x-stainless-runtime:
|
||||
- CPython
|
||||
x-stainless-runtime-version:
|
||||
- 3.12.9
|
||||
method: POST
|
||||
uri: https://api.openai.com/v1/chat/completions
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAAAwAAAP//jJJNb9swDIbv/hWEzvHgOOmS+LYOKLCvS4AVGJbCUCXa0SaTmqSkC4L8
|
||||
90FOG7trB+xiwHz4UnxJHjMAYbSoQKitjKpzNr9ex8OX21/Br92nz/49tcu3i28H/1XffLxdi0lS
|
||||
8P0PVPFJ9UZx5yxGw3TGyqOMmKpOF/Or1XK1mM570LFGm2Sti/mc886QycuinOfFIp8uH9VbNgqD
|
||||
qOB7BgBw7L+pT9L4W1RQTJ4iHYYgWxTVJQlAeLYpImQIJkRJUUwGqJgiUt/6ByB+ACUJWrNHkNCm
|
||||
tkFSeEAPsKEbQ9LCu/6/guORZIcVbMS1l6SZNmICjdyzNxFrxZZ9gh71RpxO4zc9Nrsgk2/aWTsC
|
||||
koijTHPr3d49ktPFn+XWeb4Pf0lFY8iEbe1RBqbkJUR2oqenDOCun+Pu2WiE89y5WEf+if1z5XR2
|
||||
rieG9Y3o1SOMHKUdxWfLySv1ao1RGhtGmxBKqi3qQTqsTe604RHIRq5fdvNa7bNzQ+3/lB+AUugi
|
||||
6tp51EY9dzykeUzX/a+0y5T7hkVAvzcK62jQp01obOTOnm9OhEOI2NWNoRa98+Z8eI2ri9mqXJZl
|
||||
sSpEdsr+AAAA//8DACk/g6KGAwAA
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 938485a31f9d9e59-SJC
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 30 Apr 2025 05:08:35 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-expose-headers:
|
||||
- X-Request-ID
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
openai-organization:
|
||||
- crewai-iuxna1
|
||||
openai-processing-ms:
|
||||
- '747'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-envoy-upstream-service-time:
|
||||
- '750'
|
||||
x-ratelimit-limit-requests:
|
||||
- '30000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '29999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999750'
|
||||
x-ratelimit-reset-requests:
|
||||
- 2ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_7a2f43dc0598abbebe5f11d7dbc24f39
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
Reference in New Issue
Block a user