mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-28 01:28:14 +00:00
ensure we properly fail tools and emit their events
This commit is contained in:
@@ -544,6 +544,7 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
|
|
||||||
from crewai.events import crewai_event_bus
|
from crewai.events import crewai_event_bus
|
||||||
from crewai.events.types.tool_usage_events import (
|
from crewai.events.types.tool_usage_events import (
|
||||||
|
ToolUsageErrorEvent,
|
||||||
ToolUsageFinishedEvent,
|
ToolUsageFinishedEvent,
|
||||||
ToolUsageStartedEvent,
|
ToolUsageStartedEvent,
|
||||||
)
|
)
|
||||||
@@ -611,6 +612,8 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
else:
|
else:
|
||||||
args_dict = func_args
|
args_dict = func_args
|
||||||
|
|
||||||
|
agent_key = getattr(self.agent, "key", "unknown") if self.agent else "unknown"
|
||||||
|
|
||||||
# Emit tool usage started event
|
# Emit tool usage started event
|
||||||
started_at = datetime.now()
|
started_at = datetime.now()
|
||||||
crewai_event_bus.emit(
|
crewai_event_bus.emit(
|
||||||
@@ -620,6 +623,7 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
tool_args=args_dict,
|
tool_args=args_dict,
|
||||||
from_agent=self.agent,
|
from_agent=self.agent,
|
||||||
from_task=self.task,
|
from_task=self.task,
|
||||||
|
agent_key=agent_key,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -633,6 +637,17 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
result = str(result)
|
result = str(result)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
result = f"Error executing tool: {e}"
|
result = f"Error executing tool: {e}"
|
||||||
|
crewai_event_bus.emit(
|
||||||
|
self,
|
||||||
|
event=ToolUsageErrorEvent(
|
||||||
|
tool_name=func_name,
|
||||||
|
tool_args=args_dict,
|
||||||
|
from_agent=self.agent,
|
||||||
|
from_task=self.task,
|
||||||
|
agent_key=agent_key,
|
||||||
|
error=e,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
# Emit tool usage finished event
|
# Emit tool usage finished event
|
||||||
crewai_event_bus.emit(
|
crewai_event_bus.emit(
|
||||||
@@ -643,6 +658,7 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
|||||||
tool_args=args_dict,
|
tool_args=args_dict,
|
||||||
from_agent=self.agent,
|
from_agent=self.agent,
|
||||||
from_task=self.task,
|
from_task=self.task,
|
||||||
|
agent_key=agent_key,
|
||||||
started_at=started_at,
|
started_at=started_at,
|
||||||
finished_at=datetime.now(),
|
finished_at=datetime.now(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ from crewai.events.types.logging_events import (
|
|||||||
AgentLogsStartedEvent,
|
AgentLogsStartedEvent,
|
||||||
)
|
)
|
||||||
from crewai.events.types.tool_usage_events import (
|
from crewai.events.types.tool_usage_events import (
|
||||||
|
ToolUsageErrorEvent,
|
||||||
ToolUsageFinishedEvent,
|
ToolUsageFinishedEvent,
|
||||||
ToolUsageStartedEvent,
|
ToolUsageStartedEvent,
|
||||||
)
|
)
|
||||||
@@ -581,6 +582,11 @@ class AgentExecutor(Flow[AgentReActState], CrewAgentExecutorMixin):
|
|||||||
else:
|
else:
|
||||||
args_dict = func_args
|
args_dict = func_args
|
||||||
|
|
||||||
|
# Get agent_key for event tracking
|
||||||
|
agent_key = (
|
||||||
|
getattr(self.agent, "key", "unknown") if self.agent else "unknown"
|
||||||
|
)
|
||||||
|
|
||||||
# Emit tool usage started event
|
# Emit tool usage started event
|
||||||
started_at = datetime.now()
|
started_at = datetime.now()
|
||||||
crewai_event_bus.emit(
|
crewai_event_bus.emit(
|
||||||
@@ -590,6 +596,7 @@ class AgentExecutor(Flow[AgentReActState], CrewAgentExecutorMixin):
|
|||||||
tool_args=args_dict,
|
tool_args=args_dict,
|
||||||
from_agent=self.agent,
|
from_agent=self.agent,
|
||||||
from_task=self.task,
|
from_task=self.task,
|
||||||
|
agent_key=agent_key,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -603,6 +610,18 @@ class AgentExecutor(Flow[AgentReActState], CrewAgentExecutorMixin):
|
|||||||
result = str(result)
|
result = str(result)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
result = f"Error executing tool: {e}"
|
result = f"Error executing tool: {e}"
|
||||||
|
# Emit tool usage error event
|
||||||
|
crewai_event_bus.emit(
|
||||||
|
self,
|
||||||
|
event=ToolUsageErrorEvent(
|
||||||
|
tool_name=func_name,
|
||||||
|
tool_args=args_dict,
|
||||||
|
from_agent=self.agent,
|
||||||
|
from_task=self.task,
|
||||||
|
agent_key=agent_key,
|
||||||
|
error=e,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
# Emit tool usage finished event
|
# Emit tool usage finished event
|
||||||
crewai_event_bus.emit(
|
crewai_event_bus.emit(
|
||||||
@@ -613,6 +632,7 @@ class AgentExecutor(Flow[AgentReActState], CrewAgentExecutorMixin):
|
|||||||
tool_args=args_dict,
|
tool_args=args_dict,
|
||||||
from_agent=self.agent,
|
from_agent=self.agent,
|
||||||
from_task=self.task,
|
from_task=self.task,
|
||||||
|
agent_key=agent_key,
|
||||||
started_at=started_at,
|
started_at=started_at,
|
||||||
finished_at=datetime.now(),
|
finished_at=datetime.now(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -57,6 +57,12 @@ class WeatherTool(BaseTool):
|
|||||||
"""Get weather (mock implementation)."""
|
"""Get weather (mock implementation)."""
|
||||||
return f"The weather in {location} is sunny with a temperature of 72°F"
|
return f"The weather in {location} is sunny with a temperature of 72°F"
|
||||||
|
|
||||||
|
class FailingTool(BaseTool):
|
||||||
|
"""A tool that always fails."""
|
||||||
|
name: str = "failing_tool"
|
||||||
|
description: str = "This tool always fails"
|
||||||
|
def _run(self) -> str:
|
||||||
|
raise Exception("This tool always fails")
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def calculator_tool() -> CalculatorTool:
|
def calculator_tool() -> CalculatorTool:
|
||||||
@@ -69,6 +75,12 @@ def weather_tool() -> WeatherTool:
|
|||||||
"""Create a weather tool for testing."""
|
"""Create a weather tool for testing."""
|
||||||
return WeatherTool()
|
return WeatherTool()
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def failing_tool() -> BaseTool:
|
||||||
|
"""Create a weather tool for testing."""
|
||||||
|
return FailingTool(
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# OpenAI Provider Tests
|
# OpenAI Provider Tests
|
||||||
@@ -481,3 +493,41 @@ class TestNativeToolCallingTokenUsage:
|
|||||||
print(f" Prompt tokens: {result.token_usage.prompt_tokens}")
|
print(f" Prompt tokens: {result.token_usage.prompt_tokens}")
|
||||||
print(f" Completion tokens: {result.token_usage.completion_tokens}")
|
print(f" Completion tokens: {result.token_usage.completion_tokens}")
|
||||||
print(f" Total tokens: {result.token_usage.total_tokens}")
|
print(f" Total tokens: {result.token_usage.total_tokens}")
|
||||||
|
|
||||||
|
@pytest.mark.vcr()
|
||||||
|
def test_native_tool_calling_error_handling(failing_tool: FailingTool):
|
||||||
|
"""Test that native tool calling handles errors properly and emits error events."""
|
||||||
|
import threading
|
||||||
|
from crewai.events import crewai_event_bus
|
||||||
|
from crewai.events.types.tool_usage_events import ToolUsageErrorEvent
|
||||||
|
|
||||||
|
received_events = []
|
||||||
|
event_received = threading.Event()
|
||||||
|
|
||||||
|
@crewai_event_bus.on(ToolUsageErrorEvent)
|
||||||
|
def handle_tool_error(source, event):
|
||||||
|
received_events.append(event)
|
||||||
|
event_received.set()
|
||||||
|
|
||||||
|
agent = Agent(
|
||||||
|
role="Calculator",
|
||||||
|
goal="Perform calculations efficiently",
|
||||||
|
backstory="You calculate things.",
|
||||||
|
tools=[failing_tool],
|
||||||
|
llm=LLM(model="gpt-4o-mini"),
|
||||||
|
verbose=False,
|
||||||
|
max_iter=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = agent.kickoff("Use the failing_tool to do something.")
|
||||||
|
assert result is not None
|
||||||
|
|
||||||
|
# Verify error event was emitted
|
||||||
|
assert event_received.wait(timeout=10), "ToolUsageErrorEvent was not emitted"
|
||||||
|
assert len(received_events) >= 1
|
||||||
|
|
||||||
|
# Verify event attributes
|
||||||
|
error_event = received_events[0]
|
||||||
|
assert error_event.tool_name == "failing_tool"
|
||||||
|
assert error_event.agent_role == agent.role
|
||||||
|
assert "This tool always fails" in str(error_event.error)
|
||||||
|
|||||||
@@ -0,0 +1,350 @@
|
|||||||
|
interactions:
|
||||||
|
- request:
|
||||||
|
body: '{"messages":[{"role":"system","content":"You are Calculator. You calculate
|
||||||
|
things.\nYour personal goal is: Perform calculations efficiently"},{"role":"user","content":"\nCurrent
|
||||||
|
Task: Use the failing_tool to do something.\n\nThis is VERY important to you,
|
||||||
|
your job depends on it!"}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"failing_tool","description":"This
|
||||||
|
tool always fails","parameters":{"properties":{},"type":"object"}}}]}'
|
||||||
|
headers:
|
||||||
|
User-Agent:
|
||||||
|
- X-USER-AGENT-XXX
|
||||||
|
accept:
|
||||||
|
- application/json
|
||||||
|
accept-encoding:
|
||||||
|
- ACCEPT-ENCODING-XXX
|
||||||
|
authorization:
|
||||||
|
- AUTHORIZATION-XXX
|
||||||
|
connection:
|
||||||
|
- keep-alive
|
||||||
|
content-length:
|
||||||
|
- '477'
|
||||||
|
content-type:
|
||||||
|
- application/json
|
||||||
|
host:
|
||||||
|
- api.openai.com
|
||||||
|
x-stainless-arch:
|
||||||
|
- X-STAINLESS-ARCH-XXX
|
||||||
|
x-stainless-async:
|
||||||
|
- 'false'
|
||||||
|
x-stainless-lang:
|
||||||
|
- python
|
||||||
|
x-stainless-os:
|
||||||
|
- X-STAINLESS-OS-XXX
|
||||||
|
x-stainless-package-version:
|
||||||
|
- 1.83.0
|
||||||
|
x-stainless-read-timeout:
|
||||||
|
- X-STAINLESS-READ-TIMEOUT-XXX
|
||||||
|
x-stainless-retry-count:
|
||||||
|
- '0'
|
||||||
|
x-stainless-runtime:
|
||||||
|
- CPython
|
||||||
|
x-stainless-runtime-version:
|
||||||
|
- 3.13.3
|
||||||
|
method: POST
|
||||||
|
uri: https://api.openai.com/v1/chat/completions
|
||||||
|
response:
|
||||||
|
body:
|
||||||
|
string: "{\n \"id\": \"chatcmpl-D0tnmEq7BoxjqvKeE3yIMDJ7olxJZ\",\n \"object\":
|
||||||
|
\"chat.completion\",\n \"created\": 1769106874,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
|
||||||
|
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||||
|
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
||||||
|
\ \"id\": \"call_9Lcu5CsxaVYtrX1ygC5Ggs6e\",\n \"type\":
|
||||||
|
\"function\",\n \"function\": {\n \"name\": \"failing_tool\",\n
|
||||||
|
\ \"arguments\": \"{}\"\n }\n }\n ],\n
|
||||||
|
\ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\":
|
||||||
|
null,\n \"finish_reason\": \"tool_calls\"\n }\n ],\n \"usage\":
|
||||||
|
{\n \"prompt_tokens\": 78,\n \"completion_tokens\": 11,\n \"total_tokens\":
|
||||||
|
89,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\":
|
||||||
|
0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\":
|
||||||
|
0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n
|
||||||
|
\ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
||||||
|
\"default\",\n \"system_fingerprint\": \"fp_c4585b5b9c\"\n}\n"
|
||||||
|
headers:
|
||||||
|
CF-RAY:
|
||||||
|
- CF-RAY-XXX
|
||||||
|
Connection:
|
||||||
|
- keep-alive
|
||||||
|
Content-Type:
|
||||||
|
- application/json
|
||||||
|
Date:
|
||||||
|
- Thu, 22 Jan 2026 18:34:35 GMT
|
||||||
|
Server:
|
||||||
|
- cloudflare
|
||||||
|
Set-Cookie:
|
||||||
|
- SET-COOKIE-XXX
|
||||||
|
Strict-Transport-Security:
|
||||||
|
- STS-XXX
|
||||||
|
Transfer-Encoding:
|
||||||
|
- chunked
|
||||||
|
X-Content-Type-Options:
|
||||||
|
- X-CONTENT-TYPE-XXX
|
||||||
|
access-control-expose-headers:
|
||||||
|
- ACCESS-CONTROL-XXX
|
||||||
|
alt-svc:
|
||||||
|
- h3=":443"; ma=86400
|
||||||
|
cf-cache-status:
|
||||||
|
- DYNAMIC
|
||||||
|
openai-organization:
|
||||||
|
- OPENAI-ORG-XXX
|
||||||
|
openai-processing-ms:
|
||||||
|
- '1162'
|
||||||
|
openai-project:
|
||||||
|
- OPENAI-PROJECT-XXX
|
||||||
|
openai-version:
|
||||||
|
- '2020-10-01'
|
||||||
|
x-envoy-upstream-service-time:
|
||||||
|
- '1183'
|
||||||
|
x-openai-proxy-wasm:
|
||||||
|
- v0.1
|
||||||
|
x-ratelimit-limit-requests:
|
||||||
|
- X-RATELIMIT-LIMIT-REQUESTS-XXX
|
||||||
|
x-ratelimit-limit-tokens:
|
||||||
|
- X-RATELIMIT-LIMIT-TOKENS-XXX
|
||||||
|
x-ratelimit-remaining-requests:
|
||||||
|
- X-RATELIMIT-REMAINING-REQUESTS-XXX
|
||||||
|
x-ratelimit-remaining-tokens:
|
||||||
|
- X-RATELIMIT-REMAINING-TOKENS-XXX
|
||||||
|
x-ratelimit-reset-requests:
|
||||||
|
- X-RATELIMIT-RESET-REQUESTS-XXX
|
||||||
|
x-ratelimit-reset-tokens:
|
||||||
|
- X-RATELIMIT-RESET-TOKENS-XXX
|
||||||
|
x-request-id:
|
||||||
|
- X-REQUEST-ID-XXX
|
||||||
|
status:
|
||||||
|
code: 200
|
||||||
|
message: OK
|
||||||
|
- request:
|
||||||
|
body: '{"messages":[{"role":"system","content":"You are Calculator. You calculate
|
||||||
|
things.\nYour personal goal is: Perform calculations efficiently"},{"role":"user","content":"\nCurrent
|
||||||
|
Task: Use the failing_tool to do something.\n\nThis is VERY important to you,
|
||||||
|
your job depends on it!"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_9Lcu5CsxaVYtrX1ygC5Ggs6e","type":"function","function":{"name":"failing_tool","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_9Lcu5CsxaVYtrX1ygC5Ggs6e","content":"Error
|
||||||
|
executing tool: This tool always fails"},{"role":"user","content":"Analyze the
|
||||||
|
tool result. If requirements are met, provide the Final Answer. Otherwise, call
|
||||||
|
the next tool. Deliver only the answer without meta-commentary."}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"failing_tool","description":"This
|
||||||
|
tool always fails","parameters":{"properties":{},"type":"object"}}}]}'
|
||||||
|
headers:
|
||||||
|
User-Agent:
|
||||||
|
- X-USER-AGENT-XXX
|
||||||
|
accept:
|
||||||
|
- application/json
|
||||||
|
accept-encoding:
|
||||||
|
- ACCEPT-ENCODING-XXX
|
||||||
|
authorization:
|
||||||
|
- AUTHORIZATION-XXX
|
||||||
|
connection:
|
||||||
|
- keep-alive
|
||||||
|
content-length:
|
||||||
|
- '941'
|
||||||
|
content-type:
|
||||||
|
- application/json
|
||||||
|
cookie:
|
||||||
|
- COOKIE-XXX
|
||||||
|
host:
|
||||||
|
- api.openai.com
|
||||||
|
x-stainless-arch:
|
||||||
|
- X-STAINLESS-ARCH-XXX
|
||||||
|
x-stainless-async:
|
||||||
|
- 'false'
|
||||||
|
x-stainless-lang:
|
||||||
|
- python
|
||||||
|
x-stainless-os:
|
||||||
|
- X-STAINLESS-OS-XXX
|
||||||
|
x-stainless-package-version:
|
||||||
|
- 1.83.0
|
||||||
|
x-stainless-read-timeout:
|
||||||
|
- X-STAINLESS-READ-TIMEOUT-XXX
|
||||||
|
x-stainless-retry-count:
|
||||||
|
- '0'
|
||||||
|
x-stainless-runtime:
|
||||||
|
- CPython
|
||||||
|
x-stainless-runtime-version:
|
||||||
|
- 3.13.3
|
||||||
|
method: POST
|
||||||
|
uri: https://api.openai.com/v1/chat/completions
|
||||||
|
response:
|
||||||
|
body:
|
||||||
|
string: "{\n \"id\": \"chatcmpl-D0tnnW301woCHXO3KobDB9I1Buubo\",\n \"object\":
|
||||||
|
\"chat.completion\",\n \"created\": 1769106875,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
|
||||||
|
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||||
|
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
||||||
|
\ \"id\": \"call_gzrYUdfVOx2tojk4HT4lwdps\",\n \"type\":
|
||||||
|
\"function\",\n \"function\": {\n \"name\": \"failing_tool\",\n
|
||||||
|
\ \"arguments\": \"{}\"\n }\n }\n ],\n
|
||||||
|
\ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\":
|
||||||
|
null,\n \"finish_reason\": \"tool_calls\"\n }\n ],\n \"usage\":
|
||||||
|
{\n \"prompt_tokens\": 141,\n \"completion_tokens\": 11,\n \"total_tokens\":
|
||||||
|
152,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\":
|
||||||
|
0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\":
|
||||||
|
0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n
|
||||||
|
\ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
||||||
|
\"default\",\n \"system_fingerprint\": \"fp_c4585b5b9c\"\n}\n"
|
||||||
|
headers:
|
||||||
|
CF-RAY:
|
||||||
|
- CF-RAY-XXX
|
||||||
|
Connection:
|
||||||
|
- keep-alive
|
||||||
|
Content-Type:
|
||||||
|
- application/json
|
||||||
|
Date:
|
||||||
|
- Thu, 22 Jan 2026 18:34:35 GMT
|
||||||
|
Server:
|
||||||
|
- cloudflare
|
||||||
|
Strict-Transport-Security:
|
||||||
|
- STS-XXX
|
||||||
|
Transfer-Encoding:
|
||||||
|
- chunked
|
||||||
|
X-Content-Type-Options:
|
||||||
|
- X-CONTENT-TYPE-XXX
|
||||||
|
access-control-expose-headers:
|
||||||
|
- ACCESS-CONTROL-XXX
|
||||||
|
alt-svc:
|
||||||
|
- h3=":443"; ma=86400
|
||||||
|
cf-cache-status:
|
||||||
|
- DYNAMIC
|
||||||
|
openai-organization:
|
||||||
|
- OPENAI-ORG-XXX
|
||||||
|
openai-processing-ms:
|
||||||
|
- '490'
|
||||||
|
openai-project:
|
||||||
|
- OPENAI-PROJECT-XXX
|
||||||
|
openai-version:
|
||||||
|
- '2020-10-01'
|
||||||
|
x-envoy-upstream-service-time:
|
||||||
|
- '505'
|
||||||
|
x-openai-proxy-wasm:
|
||||||
|
- v0.1
|
||||||
|
x-ratelimit-limit-requests:
|
||||||
|
- X-RATELIMIT-LIMIT-REQUESTS-XXX
|
||||||
|
x-ratelimit-limit-tokens:
|
||||||
|
- X-RATELIMIT-LIMIT-TOKENS-XXX
|
||||||
|
x-ratelimit-remaining-requests:
|
||||||
|
- X-RATELIMIT-REMAINING-REQUESTS-XXX
|
||||||
|
x-ratelimit-remaining-tokens:
|
||||||
|
- X-RATELIMIT-REMAINING-TOKENS-XXX
|
||||||
|
x-ratelimit-reset-requests:
|
||||||
|
- X-RATELIMIT-RESET-REQUESTS-XXX
|
||||||
|
x-ratelimit-reset-tokens:
|
||||||
|
- X-RATELIMIT-RESET-TOKENS-XXX
|
||||||
|
x-request-id:
|
||||||
|
- X-REQUEST-ID-XXX
|
||||||
|
status:
|
||||||
|
code: 200
|
||||||
|
message: OK
|
||||||
|
- request:
|
||||||
|
body: '{"messages":[{"role":"system","content":"You are Calculator. You calculate
|
||||||
|
things.\nYour personal goal is: Perform calculations efficiently"},{"role":"user","content":"\nCurrent
|
||||||
|
Task: Use the failing_tool to do something.\n\nThis is VERY important to you,
|
||||||
|
your job depends on it!"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_9Lcu5CsxaVYtrX1ygC5Ggs6e","type":"function","function":{"name":"failing_tool","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_9Lcu5CsxaVYtrX1ygC5Ggs6e","content":"Error
|
||||||
|
executing tool: This tool always fails"},{"role":"user","content":"Analyze the
|
||||||
|
tool result. If requirements are met, provide the Final Answer. Otherwise, call
|
||||||
|
the next tool. Deliver only the answer without meta-commentary."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_gzrYUdfVOx2tojk4HT4lwdps","type":"function","function":{"name":"failing_tool","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_gzrYUdfVOx2tojk4HT4lwdps","content":"Error
|
||||||
|
executing tool: This tool always fails"},{"role":"user","content":"Analyze the
|
||||||
|
tool result. If requirements are met, provide the Final Answer. Otherwise, call
|
||||||
|
the next tool. Deliver only the answer without meta-commentary."}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"failing_tool","description":"This
|
||||||
|
tool always fails","parameters":{"properties":{},"type":"object"}}}]}'
|
||||||
|
headers:
|
||||||
|
User-Agent:
|
||||||
|
- X-USER-AGENT-XXX
|
||||||
|
accept:
|
||||||
|
- application/json
|
||||||
|
accept-encoding:
|
||||||
|
- ACCEPT-ENCODING-XXX
|
||||||
|
authorization:
|
||||||
|
- AUTHORIZATION-XXX
|
||||||
|
connection:
|
||||||
|
- keep-alive
|
||||||
|
content-length:
|
||||||
|
- '1405'
|
||||||
|
content-type:
|
||||||
|
- application/json
|
||||||
|
cookie:
|
||||||
|
- COOKIE-XXX
|
||||||
|
host:
|
||||||
|
- api.openai.com
|
||||||
|
x-stainless-arch:
|
||||||
|
- X-STAINLESS-ARCH-XXX
|
||||||
|
x-stainless-async:
|
||||||
|
- 'false'
|
||||||
|
x-stainless-lang:
|
||||||
|
- python
|
||||||
|
x-stainless-os:
|
||||||
|
- X-STAINLESS-OS-XXX
|
||||||
|
x-stainless-package-version:
|
||||||
|
- 1.83.0
|
||||||
|
x-stainless-read-timeout:
|
||||||
|
- X-STAINLESS-READ-TIMEOUT-XXX
|
||||||
|
x-stainless-retry-count:
|
||||||
|
- '0'
|
||||||
|
x-stainless-runtime:
|
||||||
|
- CPython
|
||||||
|
x-stainless-runtime-version:
|
||||||
|
- 3.13.3
|
||||||
|
method: POST
|
||||||
|
uri: https://api.openai.com/v1/chat/completions
|
||||||
|
response:
|
||||||
|
body:
|
||||||
|
string: "{\n \"id\": \"chatcmpl-D0tnnezTDmx1TIuWsrycZMqx89CW3\",\n \"object\":
|
||||||
|
\"chat.completion\",\n \"created\": 1769106875,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
|
||||||
|
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||||
|
\"assistant\",\n \"content\": \"Error executing tool: This tool always
|
||||||
|
fails\",\n \"refusal\": null,\n \"annotations\": []\n },\n
|
||||||
|
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
|
||||||
|
\ \"usage\": {\n \"prompt_tokens\": 204,\n \"completion_tokens\": 9,\n
|
||||||
|
\ \"total_tokens\": 213,\n \"prompt_tokens_details\": {\n \"cached_tokens\":
|
||||||
|
0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\":
|
||||||
|
{\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
|
||||||
|
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
||||||
|
\"default\",\n \"system_fingerprint\": \"fp_c4585b5b9c\"\n}\n"
|
||||||
|
headers:
|
||||||
|
CF-RAY:
|
||||||
|
- CF-RAY-XXX
|
||||||
|
Connection:
|
||||||
|
- keep-alive
|
||||||
|
Content-Type:
|
||||||
|
- application/json
|
||||||
|
Date:
|
||||||
|
- Thu, 22 Jan 2026 18:34:36 GMT
|
||||||
|
Server:
|
||||||
|
- cloudflare
|
||||||
|
Strict-Transport-Security:
|
||||||
|
- STS-XXX
|
||||||
|
Transfer-Encoding:
|
||||||
|
- chunked
|
||||||
|
X-Content-Type-Options:
|
||||||
|
- X-CONTENT-TYPE-XXX
|
||||||
|
access-control-expose-headers:
|
||||||
|
- ACCESS-CONTROL-XXX
|
||||||
|
alt-svc:
|
||||||
|
- h3=":443"; ma=86400
|
||||||
|
cf-cache-status:
|
||||||
|
- DYNAMIC
|
||||||
|
openai-organization:
|
||||||
|
- OPENAI-ORG-XXX
|
||||||
|
openai-processing-ms:
|
||||||
|
- '485'
|
||||||
|
openai-project:
|
||||||
|
- OPENAI-PROJECT-XXX
|
||||||
|
openai-version:
|
||||||
|
- '2020-10-01'
|
||||||
|
x-envoy-upstream-service-time:
|
||||||
|
- '498'
|
||||||
|
x-openai-proxy-wasm:
|
||||||
|
- v0.1
|
||||||
|
x-ratelimit-limit-requests:
|
||||||
|
- X-RATELIMIT-LIMIT-REQUESTS-XXX
|
||||||
|
x-ratelimit-limit-tokens:
|
||||||
|
- X-RATELIMIT-LIMIT-TOKENS-XXX
|
||||||
|
x-ratelimit-remaining-requests:
|
||||||
|
- X-RATELIMIT-REMAINING-REQUESTS-XXX
|
||||||
|
x-ratelimit-remaining-tokens:
|
||||||
|
- X-RATELIMIT-REMAINING-TOKENS-XXX
|
||||||
|
x-ratelimit-reset-requests:
|
||||||
|
- X-RATELIMIT-RESET-REQUESTS-XXX
|
||||||
|
x-ratelimit-reset-tokens:
|
||||||
|
- X-RATELIMIT-RESET-TOKENS-XXX
|
||||||
|
x-request-id:
|
||||||
|
- X-REQUEST-ID-XXX
|
||||||
|
status:
|
||||||
|
code: 200
|
||||||
|
message: OK
|
||||||
|
version: 1
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,506 +1,230 @@
|
|||||||
interactions:
|
interactions:
|
||||||
- request:
|
- request:
|
||||||
body: '{"messages": [{"role": "system", "content": "You are base_agent. You are
|
body: '{"messages":[{"role":"system","content":"You are base_agent. You are a
|
||||||
a helpful assistant that just says hi\nYour personal goal is: Just say hi\nYou
|
helpful assistant that just says hi\nYour personal goal is: Just say hi"},{"role":"user","content":"\nCurrent
|
||||||
ONLY have access to the following tools, and should NEVER make up tools that
|
Task: Just say hi\n\nThis is the expected criteria for your final answer: hi\nyou
|
||||||
are not listed here:\n\nTool Name: say_hi\nTool Arguments: {}\nTool Description:
|
MUST return the actual complete content as the final answer, not a summary.\n\nThis
|
||||||
Say hi\n\nIMPORTANT: Use the following format in your response:\n\n```\nThought:
|
is VERY important to you, your job depends on it!"}],"model":"gpt-4.1-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"say_hi","description":"Say
|
||||||
you should always think about what to do\nAction: the action to take, only one
|
hi","parameters":{"properties":{},"type":"object"}}}]}'
|
||||||
name of [say_hi], 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```"}, {"role": "user", "content": "\nCurrent Task: Just say
|
|
||||||
hi\n\nThis is the expect criteria for your final answer: hi\nyou MUST return
|
|
||||||
the actual complete content as the final answer, not a summary.\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:
|
headers:
|
||||||
|
User-Agent:
|
||||||
|
- X-USER-AGENT-XXX
|
||||||
accept:
|
accept:
|
||||||
- application/json
|
- application/json
|
||||||
accept-encoding:
|
accept-encoding:
|
||||||
- gzip, deflate
|
- ACCEPT-ENCODING-XXX
|
||||||
|
authorization:
|
||||||
|
- AUTHORIZATION-XXX
|
||||||
connection:
|
connection:
|
||||||
- keep-alive
|
- keep-alive
|
||||||
content-length:
|
content-length:
|
||||||
- '1275'
|
- '573'
|
||||||
content-type:
|
content-type:
|
||||||
- application/json
|
- application/json
|
||||||
cookie:
|
|
||||||
- _cfuvid=efIHP1NUsh1dFewGJBu4YoBu6hhGa8vjOOKQglYQGno-1739214901306-0.0.1.1-604800000
|
|
||||||
host:
|
host:
|
||||||
- api.openai.com
|
- api.openai.com
|
||||||
user-agent:
|
|
||||||
- OpenAI/Python 1.61.0
|
|
||||||
x-stainless-arch:
|
x-stainless-arch:
|
||||||
- arm64
|
- X-STAINLESS-ARCH-XXX
|
||||||
x-stainless-async:
|
x-stainless-async:
|
||||||
- 'false'
|
- 'false'
|
||||||
x-stainless-lang:
|
x-stainless-lang:
|
||||||
- python
|
- python
|
||||||
x-stainless-os:
|
x-stainless-os:
|
||||||
- MacOS
|
- X-STAINLESS-OS-XXX
|
||||||
x-stainless-package-version:
|
x-stainless-package-version:
|
||||||
- 1.61.0
|
- 1.83.0
|
||||||
x-stainless-raw-response:
|
x-stainless-read-timeout:
|
||||||
- 'true'
|
- X-STAINLESS-READ-TIMEOUT-XXX
|
||||||
x-stainless-retry-count:
|
x-stainless-retry-count:
|
||||||
- '0'
|
- '0'
|
||||||
x-stainless-runtime:
|
x-stainless-runtime:
|
||||||
- CPython
|
- CPython
|
||||||
x-stainless-runtime-version:
|
x-stainless-runtime-version:
|
||||||
- 3.12.8
|
- 3.13.3
|
||||||
method: POST
|
method: POST
|
||||||
uri: https://api.openai.com/v1/chat/completions
|
uri: https://api.openai.com/v1/chat/completions
|
||||||
response:
|
response:
|
||||||
content: "{\n \"id\": \"chatcmpl-AzUA6kJQfpUvB4CGot4gSfAIR0foh\",\n \"object\":
|
body:
|
||||||
\"chat.completion\",\n \"created\": 1739217314,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
|
string: "{\n \"id\": \"chatcmpl-D0tf22fbIZC1zuDIm8CAr9K4GjuPO\",\n \"object\":
|
||||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
\"chat.completion\",\n \"created\": 1769106332,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n
|
||||||
\"assistant\",\n \"content\": \"you should always think about what to
|
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||||
do \\nAction: say_hi \\nAction Input: {} \",\n \"refusal\": null\n
|
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
||||||
\ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n
|
\ \"id\": \"call_1W1J7qsl4RvxPEhk2Dtw4HQH\",\n \"type\":
|
||||||
\ ],\n \"usage\": {\n \"prompt_tokens\": 257,\n \"completion_tokens\":
|
\"function\",\n \"function\": {\n \"name\": \"say_hi\",\n
|
||||||
19,\n \"total_tokens\": 276,\n \"prompt_tokens_details\": {\n \"cached_tokens\":
|
\ \"arguments\": \"{}\"\n }\n }\n ],\n
|
||||||
0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n
|
\ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\":
|
||||||
\ \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
|
null,\n \"finish_reason\": \"tool_calls\"\n }\n ],\n \"usage\":
|
||||||
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
{\n \"prompt_tokens\": 107,\n \"completion_tokens\": 10,\n \"total_tokens\":
|
||||||
\"default\",\n \"system_fingerprint\": \"fp_72ed7ab54c\"\n}\n"
|
117,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\":
|
||||||
|
0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\":
|
||||||
|
0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n
|
||||||
|
\ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
||||||
|
\"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n"
|
||||||
headers:
|
headers:
|
||||||
CF-RAY:
|
CF-RAY:
|
||||||
- 90fea7d78e1fceb9-SJC
|
- CF-RAY-XXX
|
||||||
Connection:
|
Connection:
|
||||||
- keep-alive
|
- keep-alive
|
||||||
Content-Type:
|
Content-Type:
|
||||||
- application/json
|
- application/json
|
||||||
Date:
|
Date:
|
||||||
- Mon, 10 Feb 2025 19:55:15 GMT
|
- Thu, 22 Jan 2026 18:25:33 GMT
|
||||||
Server:
|
Server:
|
||||||
- cloudflare
|
- cloudflare
|
||||||
Set-Cookie:
|
Set-Cookie:
|
||||||
- __cf_bm=fmlg1wjOwuOwZhUUOEtL1tQYluAPumn7AHLF8s0EU2Y-1739217315-1.0.1.1-PQDvxn8TOhzaznlHjwVsqPZUzbAyJWFkvzCubfNJydTu2_AyA1cJ8hkM0khsEE4UY_xp8iPe2gSGmH1ydrDa0Q;
|
- SET-COOKIE-XXX
|
||||||
path=/; expires=Mon, 10-Feb-25 20:25:15 GMT; domain=.api.openai.com; HttpOnly;
|
Strict-Transport-Security:
|
||||||
Secure; SameSite=None
|
- STS-XXX
|
||||||
Transfer-Encoding:
|
Transfer-Encoding:
|
||||||
- chunked
|
- chunked
|
||||||
X-Content-Type-Options:
|
X-Content-Type-Options:
|
||||||
- nosniff
|
- X-CONTENT-TYPE-XXX
|
||||||
access-control-expose-headers:
|
access-control-expose-headers:
|
||||||
- X-Request-ID
|
- ACCESS-CONTROL-XXX
|
||||||
alt-svc:
|
alt-svc:
|
||||||
- h3=":443"; ma=86400
|
- h3=":443"; ma=86400
|
||||||
cf-cache-status:
|
cf-cache-status:
|
||||||
- DYNAMIC
|
- DYNAMIC
|
||||||
openai-organization:
|
openai-organization:
|
||||||
- crewai-iuxna1
|
- OPENAI-ORG-XXX
|
||||||
openai-processing-ms:
|
openai-processing-ms:
|
||||||
- '526'
|
- '1012'
|
||||||
|
openai-project:
|
||||||
|
- OPENAI-PROJECT-XXX
|
||||||
openai-version:
|
openai-version:
|
||||||
- '2020-10-01'
|
- '2020-10-01'
|
||||||
strict-transport-security:
|
x-envoy-upstream-service-time:
|
||||||
- max-age=31536000; includeSubDomains; preload
|
- '1263'
|
||||||
|
x-openai-proxy-wasm:
|
||||||
|
- v0.1
|
||||||
x-ratelimit-limit-requests:
|
x-ratelimit-limit-requests:
|
||||||
- '30000'
|
- X-RATELIMIT-LIMIT-REQUESTS-XXX
|
||||||
x-ratelimit-limit-tokens:
|
x-ratelimit-limit-tokens:
|
||||||
- '150000000'
|
- X-RATELIMIT-LIMIT-TOKENS-XXX
|
||||||
x-ratelimit-remaining-requests:
|
x-ratelimit-remaining-requests:
|
||||||
- '29999'
|
- X-RATELIMIT-REMAINING-REQUESTS-XXX
|
||||||
x-ratelimit-remaining-tokens:
|
x-ratelimit-remaining-tokens:
|
||||||
- '149999703'
|
- X-RATELIMIT-REMAINING-TOKENS-XXX
|
||||||
x-ratelimit-reset-requests:
|
x-ratelimit-reset-requests:
|
||||||
- 2ms
|
- X-RATELIMIT-RESET-REQUESTS-XXX
|
||||||
x-ratelimit-reset-tokens:
|
x-ratelimit-reset-tokens:
|
||||||
- 0s
|
- X-RATELIMIT-RESET-TOKENS-XXX
|
||||||
x-request-id:
|
x-request-id:
|
||||||
- req_f6358ff0cc7a2b8d2e167ab00a40f2a4
|
- X-REQUEST-ID-XXX
|
||||||
http_version: HTTP/1.1
|
|
||||||
status_code: 200
|
|
||||||
- request:
|
|
||||||
body: '{"messages": [{"role": "system", "content": "You are base_agent. You are
|
|
||||||
a helpful assistant that just says hi\nYour personal goal is: Just say hi\nYou
|
|
||||||
ONLY have access to the following tools, and should NEVER make up tools that
|
|
||||||
are not listed here:\n\nTool Name: say_hi\nTool Arguments: {}\nTool Description:
|
|
||||||
Say hi\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 [say_hi], 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```"}, {"role": "user", "content": "\nCurrent Task: Just say
|
|
||||||
hi\n\nThis is the expect criteria for your final answer: hi\nyou MUST return
|
|
||||||
the actual complete content as the final answer, not a summary.\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:"}, {"role": "assistant", "content": "you
|
|
||||||
should always think about what to do \nAction: say_hi \nAction Input: {} \nObservation:
|
|
||||||
hi"}], "model": "gpt-4o-mini", "stop": ["\nObservation:"]}'
|
|
||||||
headers:
|
|
||||||
accept:
|
|
||||||
- application/json
|
|
||||||
accept-encoding:
|
|
||||||
- gzip, deflate
|
|
||||||
connection:
|
|
||||||
- keep-alive
|
|
||||||
content-length:
|
|
||||||
- '1410'
|
|
||||||
content-type:
|
|
||||||
- application/json
|
|
||||||
cookie:
|
|
||||||
- _cfuvid=efIHP1NUsh1dFewGJBu4YoBu6hhGa8vjOOKQglYQGno-1739214901306-0.0.1.1-604800000;
|
|
||||||
__cf_bm=fmlg1wjOwuOwZhUUOEtL1tQYluAPumn7AHLF8s0EU2Y-1739217315-1.0.1.1-PQDvxn8TOhzaznlHjwVsqPZUzbAyJWFkvzCubfNJydTu2_AyA1cJ8hkM0khsEE4UY_xp8iPe2gSGmH1ydrDa0Q
|
|
||||||
host:
|
|
||||||
- api.openai.com
|
|
||||||
user-agent:
|
|
||||||
- OpenAI/Python 1.61.0
|
|
||||||
x-stainless-arch:
|
|
||||||
- arm64
|
|
||||||
x-stainless-async:
|
|
||||||
- 'false'
|
|
||||||
x-stainless-lang:
|
|
||||||
- python
|
|
||||||
x-stainless-os:
|
|
||||||
- MacOS
|
|
||||||
x-stainless-package-version:
|
|
||||||
- 1.61.0
|
|
||||||
x-stainless-raw-response:
|
|
||||||
- 'true'
|
|
||||||
x-stainless-retry-count:
|
|
||||||
- '0'
|
|
||||||
x-stainless-runtime:
|
|
||||||
- CPython
|
|
||||||
x-stainless-runtime-version:
|
|
||||||
- 3.12.8
|
|
||||||
method: POST
|
|
||||||
uri: https://api.openai.com/v1/chat/completions
|
|
||||||
response:
|
|
||||||
content: "{\n \"id\": \"chatcmpl-AzUA7QdlQy1WZZijxNWUv25sZycg0\",\n \"object\":
|
|
||||||
\"chat.completion\",\n \"created\": 1739217315,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
|
|
||||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
|
||||||
\"assistant\",\n \"content\": \"```\\nThought: I now know the final answer\\nFinal
|
|
||||||
Answer: hi\\n```\",\n \"refusal\": null\n },\n \"logprobs\":
|
|
||||||
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
|
|
||||||
283,\n \"completion_tokens\": 17,\n \"total_tokens\": 300,\n \"prompt_tokens_details\":
|
|
||||||
{\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\":
|
|
||||||
{\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
|
|
||||||
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
|
||||||
\"default\",\n \"system_fingerprint\": \"fp_72ed7ab54c\"\n}\n"
|
|
||||||
headers:
|
|
||||||
CF-RAY:
|
|
||||||
- 90fea7dc5ba6ceb9-SJC
|
|
||||||
Connection:
|
|
||||||
- keep-alive
|
|
||||||
Content-Type:
|
|
||||||
- application/json
|
|
||||||
Date:
|
|
||||||
- Mon, 10 Feb 2025 19:55:15 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:
|
|
||||||
- '388'
|
|
||||||
openai-version:
|
|
||||||
- '2020-10-01'
|
|
||||||
strict-transport-security:
|
|
||||||
- max-age=31536000; includeSubDomains; preload
|
|
||||||
x-ratelimit-limit-requests:
|
|
||||||
- '30000'
|
|
||||||
x-ratelimit-limit-tokens:
|
|
||||||
- '150000000'
|
|
||||||
x-ratelimit-remaining-requests:
|
|
||||||
- '29999'
|
|
||||||
x-ratelimit-remaining-tokens:
|
|
||||||
- '149999680'
|
|
||||||
x-ratelimit-reset-requests:
|
|
||||||
- 2ms
|
|
||||||
x-ratelimit-reset-tokens:
|
|
||||||
- 0s
|
|
||||||
x-request-id:
|
|
||||||
- req_7d7c68b90b3a9c3ac6092fe17ac1185a
|
|
||||||
http_version: HTTP/1.1
|
|
||||||
status_code: 200
|
|
||||||
- request:
|
|
||||||
body: !!binary |
|
|
||||||
CoMzCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkS2jIKEgoQY3Jld2FpLnRl
|
|
||||||
bGVtZXRyeRKOAgoQ2EINIGZRoXD589od63oHmBIIMfUgEWudUbIqDFRhc2sgQ3JlYXRlZDABOcjI
|
|
||||||
7lbu8CIYQZB471bu8CIYSi4KCGNyZXdfa2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhj
|
|
||||||
NzQ2MjhjSjEKB2NyZXdfaWQSJgokNTE4ODdiOTktY2FlMy00Yjc4LWJjMGEtMDY4MmVmNWEzNGQ0
|
|
||||||
Si4KCHRhc2tfa2V5EiIKIDFiMTVlZjIzOTE1YjI3NTVlODlhMGVjM2IyNmExM2QySjEKB3Rhc2tf
|
|
||||||
aWQSJgokMzlmMDlmMWUtOTJmOC00ZGJiLTgzNDAtNjU2ZmVkMDk3ZjM0egIYAYUBAAEAABKkBwoQ
|
|
||||||
RzhWoF6ewSTS/qUc9yeFRhIIM3SNZCwjz5AqDENyZXcgQ3JlYXRlZDABOQjrGlru8CIYQdgbKVru
|
|
||||||
8CIYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTAwLjBKGgoOcHl0aG9uX3ZlcnNpb24SCAoGMy4x
|
|
||||||
Mi44Si4KCGNyZXdfa2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhjNzQ2MjhjSjEKB2Ny
|
|
||||||
ZXdfaWQSJgokYzk4ODFkY2YtMmM0MS00ZjRlLTgzMjctNjJjYjFhYjJkOTg4ShwKDGNyZXdfcHJv
|
|
||||||
Y2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3X251bWJlcl9vZl90
|
|
||||||
YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUrRAgoLY3Jld19hZ2VudHMSwQIK
|
|
||||||
vgJbeyJrZXkiOiAiYWQxNTMxNjFjNWM1YTg1NmFhMGQwNmIyNDljNGM2NGEiLCAiaWQiOiAiNTU2
|
|
||||||
NzJiMDgtOTU4ZC00MjljLWE3ZTctY2ZlN2U4Y2MwOGZkIiwgInJvbGUiOiAiYmFzZV9hZ2VudCIs
|
|
||||||
ICJ2ZXJib3NlPyI6IGZhbHNlLCAibWF4X2l0ZXIiOiAyMCwgIm1heF9ycG0iOiBudWxsLCAiZnVu
|
|
||||||
Y3Rpb25fY2FsbGluZ19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9u
|
|
||||||
X2VuYWJsZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9y
|
|
||||||
ZXRyeV9saW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfV1K/wEKCmNyZXdfdGFza3MS8AEK7QFb
|
|
||||||
eyJrZXkiOiAiMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEzZDIiLCAiaWQiOiAiMzlmMDlm
|
|
||||||
MWUtOTJmOC00ZGJiLTgzNDAtNjU2ZmVkMDk3ZjM0IiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxz
|
|
||||||
ZSwgImh1bWFuX2lucHV0PyI6IGZhbHNlLCAiYWdlbnRfcm9sZSI6ICJiYXNlX2FnZW50IiwgImFn
|
|
||||||
ZW50X2tleSI6ICJhZDE1MzE2MWM1YzVhODU2YWEwZDA2YjI0OWM0YzY0YSIsICJ0b29sc19uYW1l
|
|
||||||
cyI6IFtdfV16AhgBhQEAAQAAEo4CChB8AxWkb2Uwpdc8RpyCRqw5EggJAxbgNu81XyoMVGFzayBD
|
|
||||||
cmVhdGVkMAE5+HQ8Wu7wIhhB+PE8Wu7wIhhKLgoIY3Jld19rZXkSIgogZTU4MDcwMWQ1MmViNjVh
|
|
||||||
ZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jld19pZBImCiRjOTg4MWRjZi0yYzQxLTRmNGUtODMyNy02
|
|
||||||
MmNiMWFiMmQ5ODhKLgoIdGFza19rZXkSIgogMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEz
|
|
||||||
ZDJKMQoHdGFza19pZBImCiQzOWYwOWYxZS05MmY4LTRkYmItODM0MC02NTZmZWQwOTdmMzR6AhgB
|
|
||||||
hQEAAQAAEqQHChCcXvdbsgYC+gzCMrXs3LN/EgijKwJLCRIiHioMQ3JldyBDcmVhdGVkMAE5iJqz
|
|
||||||
vu7wIhhBqKC/vu7wIhhKGwoOY3Jld2FpX3ZlcnNpb24SCQoHMC4xMDAuMEoaCg5weXRob25fdmVy
|
|
||||||
c2lvbhIICgYzLjEyLjhKLgoIY3Jld19rZXkSIgogZTU4MDcwMWQ1MmViNjVhZmYyNGVlZmU3OGM3
|
|
||||||
NDYyOGNKMQoHY3Jld19pZBImCiQ2Zjk1ZWI3Yy0wOWM5LTQxOTYtYWFiYi1kOWIxNmMxMzZjODdK
|
|
||||||
HAoMY3Jld19wcm9jZXNzEgwKCnNlcXVlbnRpYWxKEQoLY3Jld19tZW1vcnkSAhAAShoKFGNyZXdf
|
|
||||||
bnVtYmVyX29mX3Rhc2tzEgIYAUobChVjcmV3X251bWJlcl9vZl9hZ2VudHMSAhgBStECCgtjcmV3
|
|
||||||
X2FnZW50cxLBAgq+Alt7ImtleSI6ICJhZDE1MzE2MWM1YzVhODU2YWEwZDA2YjI0OWM0YzY0YSIs
|
|
||||||
ICJpZCI6ICI1NTY3MmIwOC05NThkLTQyOWMtYTdlNy1jZmU3ZThjYzA4ZmQiLCAicm9sZSI6ICJi
|
|
||||||
YXNlX2FnZW50IiwgInZlcmJvc2U/IjogZmFsc2UsICJtYXhfaXRlciI6IDIwLCAibWF4X3JwbSI6
|
|
||||||
IG51bGwsICJmdW5jdGlvbl9jYWxsaW5nX2xsbSI6ICIiLCAibGxtIjogImdwdC00by1taW5pIiwg
|
|
||||||
ImRlbGVnYXRpb25fZW5hYmxlZD8iOiBmYWxzZSwgImFsbG93X2NvZGVfZXhlY3V0aW9uPyI6IGZh
|
|
||||||
bHNlLCAibWF4X3JldHJ5X2xpbWl0IjogMiwgInRvb2xzX25hbWVzIjogW119XUr/AQoKY3Jld190
|
|
||||||
YXNrcxLwAQrtAVt7ImtleSI6ICIxYjE1ZWYyMzkxNWIyNzU1ZTg5YTBlYzNiMjZhMTNkMiIsICJp
|
|
||||||
ZCI6ICIzOWYwOWYxZS05MmY4LTRkYmItODM0MC02NTZmZWQwOTdmMzQiLCAiYXN5bmNfZXhlY3V0
|
|
||||||
aW9uPyI6IGZhbHNlLCAiaHVtYW5faW5wdXQ/IjogZmFsc2UsICJhZ2VudF9yb2xlIjogImJhc2Vf
|
|
||||||
YWdlbnQiLCAiYWdlbnRfa2V5IjogImFkMTUzMTYxYzVjNWE4NTZhYTBkMDZiMjQ5YzRjNjRhIiwg
|
|
||||||
InRvb2xzX25hbWVzIjogW119XXoCGAGFAQABAAASjgIKEExDo5nPLyHb2H8DfYjPoX4SCLEYs+24
|
|
||||||
8EenKgxUYXNrIENyZWF0ZWQwATmI4NG+7vAiGEFYZdK+7vAiGEouCghjcmV3X2tleRIiCiBlNTgw
|
|
||||||
NzAxZDUyZWI2NWFmZjI0ZWVmZTc4Yzc0NjI4Y0oxCgdjcmV3X2lkEiYKJDZmOTVlYjdjLTA5Yzkt
|
|
||||||
NDE5Ni1hYWJiLWQ5YjE2YzEzNmM4N0ouCgh0YXNrX2tleRIiCiAxYjE1ZWYyMzkxNWIyNzU1ZTg5
|
|
||||||
YTBlYzNiMjZhMTNkMkoxCgd0YXNrX2lkEiYKJDM5ZjA5ZjFlLTkyZjgtNGRiYi04MzQwLTY1NmZl
|
|
||||||
ZDA5N2YzNHoCGAGFAQABAAASpAcKEBBQzR2bcR/7woQ+VkaJ4kQSCD1LFx3SNPPPKgxDcmV3IENy
|
|
||||||
ZWF0ZWQwATlotsW/7vAiGEEgA9C/7vAiGEobCg5jcmV3YWlfdmVyc2lvbhIJCgcwLjEwMC4wShoK
|
|
||||||
DnB5dGhvbl92ZXJzaW9uEggKBjMuMTIuOEouCghjcmV3X2tleRIiCiBlNTgwNzAxZDUyZWI2NWFm
|
|
||||||
ZjI0ZWVmZTc4Yzc0NjI4Y0oxCgdjcmV3X2lkEiYKJDJiMWI2MGYzLTNlZTMtNGNjYi05MDM2LTdk
|
|
||||||
MzE4OTJiYjVkZkocCgxjcmV3X3Byb2Nlc3MSDAoKc2VxdWVudGlhbEoRCgtjcmV3X21lbW9yeRIC
|
|
||||||
EABKGgoUY3Jld19udW1iZXJfb2ZfdGFza3MSAhgBShsKFWNyZXdfbnVtYmVyX29mX2FnZW50cxIC
|
|
||||||
GAFK0QIKC2NyZXdfYWdlbnRzEsECCr4CW3sia2V5IjogImFkMTUzMTYxYzVjNWE4NTZhYTBkMDZi
|
|
||||||
MjQ5YzRjNjRhIiwgImlkIjogIjU1NjcyYjA4LTk1OGQtNDI5Yy1hN2U3LWNmZTdlOGNjMDhmZCIs
|
|
||||||
ICJyb2xlIjogImJhc2VfYWdlbnQiLCAidmVyYm9zZT8iOiBmYWxzZSwgIm1heF9pdGVyIjogMjAs
|
|
||||||
ICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2NhbGxpbmdfbGxtIjogIiIsICJsbG0iOiAiZ3B0
|
|
||||||
LTRvLW1pbmkiLCAiZGVsZWdhdGlvbl9lbmFibGVkPyI6IGZhbHNlLCAiYWxsb3dfY29kZV9leGVj
|
|
||||||
dXRpb24/IjogZmFsc2UsICJtYXhfcmV0cnlfbGltaXQiOiAyLCAidG9vbHNfbmFtZXMiOiBbXX1d
|
|
||||||
Sv8BCgpjcmV3X3Rhc2tzEvABCu0BW3sia2V5IjogIjFiMTVlZjIzOTE1YjI3NTVlODlhMGVjM2Iy
|
|
||||||
NmExM2QyIiwgImlkIjogIjM5ZjA5ZjFlLTkyZjgtNGRiYi04MzQwLTY1NmZlZDA5N2YzNCIsICJh
|
|
||||||
c3luY19leGVjdXRpb24/IjogZmFsc2UsICJodW1hbl9pbnB1dD8iOiBmYWxzZSwgImFnZW50X3Jv
|
|
||||||
bGUiOiAiYmFzZV9hZ2VudCIsICJhZ2VudF9rZXkiOiAiYWQxNTMxNjFjNWM1YTg1NmFhMGQwNmIy
|
|
||||||
NDljNGM2NGEiLCAidG9vbHNfbmFtZXMiOiBbXX1degIYAYUBAAEAABKOAgoQmT07KMiFRgzOOPQf
|
|
||||||
I4bJPhIIqzN+pCYM6IUqDFRhc2sgQ3JlYXRlZDABOYjr3r/u8CIYQehY37/u8CIYSi4KCGNyZXdf
|
|
||||||
a2V5EiIKIGU1ODA3MDFkNTJlYjY1YWZmMjRlZWZlNzhjNzQ2MjhjSjEKB2NyZXdfaWQSJgokMmIx
|
|
||||||
YjYwZjMtM2VlMy00Y2NiLTkwMzYtN2QzMTg5MmJiNWRmSi4KCHRhc2tfa2V5EiIKIDFiMTVlZjIz
|
|
||||||
OTE1YjI3NTVlODlhMGVjM2IyNmExM2QySjEKB3Rhc2tfaWQSJgokMzlmMDlmMWUtOTJmOC00ZGJi
|
|
||||||
LTgzNDAtNjU2ZmVkMDk3ZjM0egIYAYUBAAEAABKkBwoQE53vZNAWshkoNK1bqTvovRII83djkBUL
|
|
||||||
EbcqDENyZXcgQ3JlYXRlZDABORBBzsDu8CIYQbAU2MDu8CIYShsKDmNyZXdhaV92ZXJzaW9uEgkK
|
|
||||||
BzAuMTAwLjBKGgoOcHl0aG9uX3ZlcnNpb24SCAoGMy4xMi44Si4KCGNyZXdfa2V5EiIKIGU1ODA3
|
|
||||||
MDFkNTJlYjY1YWZmMjRlZWZlNzhjNzQ2MjhjSjEKB2NyZXdfaWQSJgokNTQ0MWY0MWYtOTVjMC00
|
|
||||||
YzdkLTkxM2QtNDUxODcwY2YyZjYzShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2Ny
|
|
||||||
ZXdfbWVtb3J5EgIQAEoaChRjcmV3X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJf
|
|
||||||
b2ZfYWdlbnRzEgIYAUrRAgoLY3Jld19hZ2VudHMSwQIKvgJbeyJrZXkiOiAiYWQxNTMxNjFjNWM1
|
|
||||||
YTg1NmFhMGQwNmIyNDljNGM2NGEiLCAiaWQiOiAiNTU2NzJiMDgtOTU4ZC00MjljLWE3ZTctY2Zl
|
|
||||||
N2U4Y2MwOGZkIiwgInJvbGUiOiAiYmFzZV9hZ2VudCIsICJ2ZXJib3NlPyI6IGZhbHNlLCAibWF4
|
|
||||||
X2l0ZXIiOiAyMCwgIm1heF9ycG0iOiBudWxsLCAiZnVuY3Rpb25fY2FsbGluZ19sbG0iOiAiIiwg
|
|
||||||
ImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9uX2VuYWJsZWQ/IjogZmFsc2UsICJhbGxv
|
|
||||||
d19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9yZXRyeV9saW1pdCI6IDIsICJ0b29sc19u
|
|
||||||
YW1lcyI6IFtdfV1K/wEKCmNyZXdfdGFza3MS8AEK7QFbeyJrZXkiOiAiMWIxNWVmMjM5MTViMjc1
|
|
||||||
NWU4OWEwZWMzYjI2YTEzZDIiLCAiaWQiOiAiMzlmMDlmMWUtOTJmOC00ZGJiLTgzNDAtNjU2ZmVk
|
|
||||||
MDk3ZjM0IiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lucHV0PyI6IGZhbHNl
|
|
||||||
LCAiYWdlbnRfcm9sZSI6ICJiYXNlX2FnZW50IiwgImFnZW50X2tleSI6ICJhZDE1MzE2MWM1YzVh
|
|
||||||
ODU2YWEwZDA2YjI0OWM0YzY0YSIsICJ0b29sc19uYW1lcyI6IFtdfV16AhgBhQEAAQAAEo4CChBV
|
|
||||||
JNEz3VIdOlQM9VT3bctVEgisogN707a2AioMVGFzayBDcmVhdGVkMAE5kGbnwO7wIhhBaMDnwO7w
|
|
||||||
IhhKLgoIY3Jld19rZXkSIgogZTU4MDcwMWQ1MmViNjVhZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jl
|
|
||||||
d19pZBImCiQ1NDQxZjQxZi05NWMwLTRjN2QtOTEzZC00NTE4NzBjZjJmNjNKLgoIdGFza19rZXkS
|
|
||||||
IgogMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2YTEzZDJKMQoHdGFza19pZBImCiQzOWYwOWYx
|
|
||||||
ZS05MmY4LTRkYmItODM0MC02NTZmZWQwOTdmMzR6AhgBhQEAAQAAErQHChDA7zaLCfy56rd5t3oS
|
|
||||||
rDPZEgjYoSW3mq6WJyoMQ3JldyBDcmVhdGVkMAE5cP/5we7wIhhBIH0Dwu7wIhhKGwoOY3Jld2Fp
|
|
||||||
X3ZlcnNpb24SCQoHMC4xMDAuMEoaCg5weXRob25fdmVyc2lvbhIICgYzLjEyLjhKLgoIY3Jld19r
|
|
||||||
ZXkSIgogZTU4MDcwMWQ1MmViNjVhZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jld19pZBImCiRmNjcz
|
|
||||||
MTc1ZS04Y2Q1LTQ1ZWUtYTZiOS0xYWFjMTliODQxZWJKHAoMY3Jld19wcm9jZXNzEgwKCnNlcXVl
|
|
||||||
bnRpYWxKEQoLY3Jld19tZW1vcnkSAhAAShoKFGNyZXdfbnVtYmVyX29mX3Rhc2tzEgIYAUobChVj
|
|
||||||
cmV3X251bWJlcl9vZl9hZ2VudHMSAhgBStkCCgtjcmV3X2FnZW50cxLJAgrGAlt7ImtleSI6ICJh
|
|
||||||
ZDE1MzE2MWM1YzVhODU2YWEwZDA2YjI0OWM0YzY0YSIsICJpZCI6ICJmMGUwMGIzZi0wZWNmLTQ2
|
|
||||||
OGQtYjdjMC0yZmJhN2I5OTc5YjMiLCAicm9sZSI6ICJiYXNlX2FnZW50IiwgInZlcmJvc2U/Ijog
|
|
||||||
ZmFsc2UsICJtYXhfaXRlciI6IDIwLCAibWF4X3JwbSI6IG51bGwsICJmdW5jdGlvbl9jYWxsaW5n
|
|
||||||
X2xsbSI6ICIiLCAibGxtIjogImdwdC00by1taW5pIiwgImRlbGVnYXRpb25fZW5hYmxlZD8iOiBm
|
|
||||||
YWxzZSwgImFsbG93X2NvZGVfZXhlY3V0aW9uPyI6IGZhbHNlLCAibWF4X3JldHJ5X2xpbWl0Ijog
|
|
||||||
MiwgInRvb2xzX25hbWVzIjogWyJzYXlfaGkiXX1dSocCCgpjcmV3X3Rhc2tzEvgBCvUBW3sia2V5
|
|
||||||
IjogIjFiMTVlZjIzOTE1YjI3NTVlODlhMGVjM2IyNmExM2QyIiwgImlkIjogImFhMGFmMmE2LTdm
|
|
||||||
MTktNDZmNi1iMjMxLTg1M2JjYzYxYzhiZiIsICJhc3luY19leGVjdXRpb24/IjogZmFsc2UsICJo
|
|
||||||
dW1hbl9pbnB1dD8iOiBmYWxzZSwgImFnZW50X3JvbGUiOiAiYmFzZV9hZ2VudCIsICJhZ2VudF9r
|
|
||||||
ZXkiOiAiYWQxNTMxNjFjNWM1YTg1NmFhMGQwNmIyNDljNGM2NGEiLCAidG9vbHNfbmFtZXMiOiBb
|
|
||||||
InNheV9oaSJdfV16AhgBhQEAAQAAEo4CChBH8NUZY1Cv8sM2lfQLaEogEgiFlW7Wp7QpdyoMVGFz
|
|
||||||
ayBDcmVhdGVkMAE5MNkPwu7wIhhBUCcQwu7wIhhKLgoIY3Jld19rZXkSIgogZTU4MDcwMWQ1MmVi
|
|
||||||
NjVhZmYyNGVlZmU3OGM3NDYyOGNKMQoHY3Jld19pZBImCiRmNjczMTc1ZS04Y2Q1LTQ1ZWUtYTZi
|
|
||||||
OS0xYWFjMTliODQxZWJKLgoIdGFza19rZXkSIgogMWIxNWVmMjM5MTViMjc1NWU4OWEwZWMzYjI2
|
|
||||||
YTEzZDJKMQoHdGFza19pZBImCiRhYTBhZjJhNi03ZjE5LTQ2ZjYtYjIzMS04NTNiY2M2MWM4YmZ6
|
|
||||||
AhgBhQEAAQAAEooBChCJg/wSACw+HIDy4vvYISP/EgjoC/oI/1V0cCoKVG9vbCBVc2FnZTABOWA0
|
|
||||||
ifTu8CIYQTD0lPTu8CIYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTAwLjBKFQoJdG9vbF9uYW1l
|
|
||||||
EggKBnNheV9oaUoOCghhdHRlbXB0cxICGAF6AhgBhQEAAQAA
|
|
||||||
headers:
|
|
||||||
Accept:
|
|
||||||
- '*/*'
|
|
||||||
Accept-Encoding:
|
|
||||||
- gzip, deflate
|
|
||||||
Connection:
|
|
||||||
- keep-alive
|
|
||||||
Content-Length:
|
|
||||||
- '6534'
|
|
||||||
Content-Type:
|
|
||||||
- application/x-protobuf
|
|
||||||
User-Agent:
|
|
||||||
- OTel-OTLP-Exporter-Python/1.27.0
|
|
||||||
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:
|
|
||||||
- Mon, 10 Feb 2025 19:55:17 GMT
|
|
||||||
status:
|
status:
|
||||||
code: 200
|
code: 200
|
||||||
message: OK
|
message: OK
|
||||||
- request:
|
- request:
|
||||||
body: '{"messages": [{"role": "user", "content": "Assess the quality of the task
|
body: '{"messages":[{"role":"system","content":"You are base_agent. You are a
|
||||||
completed based on the description, expected output, and actual results.\n\nTask
|
helpful assistant that just says hi\nYour personal goal is: Just say hi"},{"role":"user","content":"\nCurrent
|
||||||
Description:\nJust say hi\n\nExpected Output:\nhi\n\nActual Output:\nhi\n```\n\nPlease
|
Task: Just say hi\n\nThis is the expected criteria for your final answer: hi\nyou
|
||||||
provide:\n- Bullet points suggestions to improve future similar tasks\n- A score
|
MUST return the actual complete content as the final answer, not a summary.\n\nThis
|
||||||
from 0 to 10 evaluating on completion, quality, and overall performance- Entities
|
is VERY important to you, your job depends on it!"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_1W1J7qsl4RvxPEhk2Dtw4HQH","type":"function","function":{"name":"say_hi","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_1W1J7qsl4RvxPEhk2Dtw4HQH","content":"hi"},{"role":"user","content":"Analyze
|
||||||
extracted from the task output, if any, their type, description, and relationships"}],
|
the tool result. If requirements are met, provide the Final Answer. Otherwise,
|
||||||
"model": "gpt-4o-mini", "tool_choice": {"type": "function", "function": {"name":
|
call the next tool. Deliver only the answer without meta-commentary."}],"model":"gpt-4.1-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"say_hi","description":"Say
|
||||||
"TaskEvaluation"}}, "tools": [{"type": "function", "function": {"name": "TaskEvaluation",
|
hi","parameters":{"properties":{},"type":"object"}}}]}'
|
||||||
"description": "Correctly extracted `TaskEvaluation` with all the required parameters
|
|
||||||
with correct types", "parameters": {"$defs": {"Entity": {"properties": {"name":
|
|
||||||
{"description": "The name of the entity.", "title": "Name", "type": "string"},
|
|
||||||
"type": {"description": "The type of the entity.", "title": "Type", "type":
|
|
||||||
"string"}, "description": {"description": "Description of the entity.", "title":
|
|
||||||
"Description", "type": "string"}, "relationships": {"description": "Relationships
|
|
||||||
of the entity.", "items": {"type": "string"}, "title": "Relationships", "type":
|
|
||||||
"array"}}, "required": ["name", "type", "description", "relationships"], "title":
|
|
||||||
"Entity", "type": "object"}}, "properties": {"suggestions": {"description":
|
|
||||||
"Suggestions to improve future similar tasks.", "items": {"type": "string"},
|
|
||||||
"title": "Suggestions", "type": "array"}, "quality": {"description": "A score
|
|
||||||
from 0 to 10 evaluating on completion, quality, and overall performance, all
|
|
||||||
taking into account the task description, expected output, and the result of
|
|
||||||
the task.", "title": "Quality", "type": "number"}, "entities": {"description":
|
|
||||||
"Entities extracted from the task output.", "items": {"$ref": "#/$defs/Entity"},
|
|
||||||
"title": "Entities", "type": "array"}}, "required": ["entities", "quality",
|
|
||||||
"suggestions"], "type": "object"}}}]}'
|
|
||||||
headers:
|
headers:
|
||||||
|
User-Agent:
|
||||||
|
- X-USER-AGENT-XXX
|
||||||
accept:
|
accept:
|
||||||
- application/json
|
- application/json
|
||||||
accept-encoding:
|
accept-encoding:
|
||||||
- gzip, deflate
|
- ACCEPT-ENCODING-XXX
|
||||||
|
authorization:
|
||||||
|
- AUTHORIZATION-XXX
|
||||||
connection:
|
connection:
|
||||||
- keep-alive
|
- keep-alive
|
||||||
content-length:
|
content-length:
|
||||||
- '1967'
|
- '989'
|
||||||
content-type:
|
content-type:
|
||||||
- application/json
|
- application/json
|
||||||
cookie:
|
cookie:
|
||||||
- _cfuvid=efIHP1NUsh1dFewGJBu4YoBu6hhGa8vjOOKQglYQGno-1739214901306-0.0.1.1-604800000;
|
- COOKIE-XXX
|
||||||
__cf_bm=fmlg1wjOwuOwZhUUOEtL1tQYluAPumn7AHLF8s0EU2Y-1739217315-1.0.1.1-PQDvxn8TOhzaznlHjwVsqPZUzbAyJWFkvzCubfNJydTu2_AyA1cJ8hkM0khsEE4UY_xp8iPe2gSGmH1ydrDa0Q
|
|
||||||
host:
|
host:
|
||||||
- api.openai.com
|
- api.openai.com
|
||||||
user-agent:
|
|
||||||
- OpenAI/Python 1.61.0
|
|
||||||
x-stainless-arch:
|
x-stainless-arch:
|
||||||
- arm64
|
- X-STAINLESS-ARCH-XXX
|
||||||
x-stainless-async:
|
x-stainless-async:
|
||||||
- 'false'
|
- 'false'
|
||||||
x-stainless-lang:
|
x-stainless-lang:
|
||||||
- python
|
- python
|
||||||
x-stainless-os:
|
x-stainless-os:
|
||||||
- MacOS
|
- X-STAINLESS-OS-XXX
|
||||||
x-stainless-package-version:
|
x-stainless-package-version:
|
||||||
- 1.61.0
|
- 1.83.0
|
||||||
x-stainless-raw-response:
|
x-stainless-read-timeout:
|
||||||
- 'true'
|
- X-STAINLESS-READ-TIMEOUT-XXX
|
||||||
x-stainless-retry-count:
|
x-stainless-retry-count:
|
||||||
- '0'
|
- '0'
|
||||||
x-stainless-runtime:
|
x-stainless-runtime:
|
||||||
- CPython
|
- CPython
|
||||||
x-stainless-runtime-version:
|
x-stainless-runtime-version:
|
||||||
- 3.12.8
|
- 3.13.3
|
||||||
method: POST
|
method: POST
|
||||||
uri: https://api.openai.com/v1/chat/completions
|
uri: https://api.openai.com/v1/chat/completions
|
||||||
response:
|
response:
|
||||||
content: "{\n \"id\": \"chatcmpl-AzUA8oE0A2d99i1Khpu0CI7fSgRtZ\",\n \"object\":
|
body:
|
||||||
\"chat.completion\",\n \"created\": 1739217316,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
|
string: "{\n \"id\": \"chatcmpl-D0tf3PACWSkcoq9h5ZN5dxKracOvg\",\n \"object\":
|
||||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
\"chat.completion\",\n \"created\": 1769106333,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n
|
||||||
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||||
\ \"id\": \"call_bk3duHRErK1qCyvWJ1uVmmGl\",\n \"type\":
|
\"assistant\",\n \"content\": \"hi\",\n \"refusal\": null,\n
|
||||||
\"function\",\n \"function\": {\n \"name\": \"TaskEvaluation\",\n
|
\ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\":
|
||||||
\ \"arguments\": \"{\\\"suggestions\\\":[\\\"Provide more context
|
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 161,\n \"completion_tokens\":
|
||||||
or details for similar tasks to enhance clarity.\\\",\\\"Specify desired tone
|
2,\n \"total_tokens\": 163,\n \"prompt_tokens_details\": {\n \"cached_tokens\":
|
||||||
or style for the output.\\\",\\\"Consider adding more variety in tasks to keep
|
0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\":
|
||||||
engagement high.\\\"],\\\"quality\\\":10,\\\"entities\\\":[{\\\"name\\\":\\\"hi\\\",\\\"type\\\":\\\"greeting\\\",\\\"description\\\":\\\"A
|
{\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
|
||||||
casual way to say hello or acknowledge someone's presence.\\\",\\\"relationships\\\":[\\\"used
|
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
||||||
as a greeting\\\",\\\"expresses friendliness\\\"]}]}\"\n }\n }\n
|
\"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n"
|
||||||
\ ],\n \"refusal\": null\n },\n \"logprobs\": null,\n
|
|
||||||
\ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
|
|
||||||
275,\n \"completion_tokens\": 80,\n \"total_tokens\": 355,\n \"prompt_tokens_details\":
|
|
||||||
{\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\":
|
|
||||||
{\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
|
|
||||||
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
|
|
||||||
\"default\",\n \"system_fingerprint\": \"fp_72ed7ab54c\"\n}\n"
|
|
||||||
headers:
|
headers:
|
||||||
CF-RAY:
|
CF-RAY:
|
||||||
- 90fea7dfef41ceb9-SJC
|
- CF-RAY-XXX
|
||||||
Connection:
|
Connection:
|
||||||
- keep-alive
|
- keep-alive
|
||||||
Content-Type:
|
Content-Type:
|
||||||
- application/json
|
- application/json
|
||||||
Date:
|
Date:
|
||||||
- Mon, 10 Feb 2025 19:55:17 GMT
|
- Thu, 22 Jan 2026 18:25:33 GMT
|
||||||
Server:
|
Server:
|
||||||
- cloudflare
|
- cloudflare
|
||||||
|
Strict-Transport-Security:
|
||||||
|
- STS-XXX
|
||||||
Transfer-Encoding:
|
Transfer-Encoding:
|
||||||
- chunked
|
- chunked
|
||||||
X-Content-Type-Options:
|
X-Content-Type-Options:
|
||||||
- nosniff
|
- X-CONTENT-TYPE-XXX
|
||||||
access-control-expose-headers:
|
access-control-expose-headers:
|
||||||
- X-Request-ID
|
- ACCESS-CONTROL-XXX
|
||||||
alt-svc:
|
alt-svc:
|
||||||
- h3=":443"; ma=86400
|
- h3=":443"; ma=86400
|
||||||
cf-cache-status:
|
cf-cache-status:
|
||||||
- DYNAMIC
|
- DYNAMIC
|
||||||
openai-organization:
|
openai-organization:
|
||||||
- crewai-iuxna1
|
- OPENAI-ORG-XXX
|
||||||
openai-processing-ms:
|
openai-processing-ms:
|
||||||
- '1535'
|
- '297'
|
||||||
|
openai-project:
|
||||||
|
- OPENAI-PROJECT-XXX
|
||||||
openai-version:
|
openai-version:
|
||||||
- '2020-10-01'
|
- '2020-10-01'
|
||||||
strict-transport-security:
|
x-envoy-upstream-service-time:
|
||||||
- max-age=31536000; includeSubDomains; preload
|
- '322'
|
||||||
|
x-openai-proxy-wasm:
|
||||||
|
- v0.1
|
||||||
x-ratelimit-limit-requests:
|
x-ratelimit-limit-requests:
|
||||||
- '30000'
|
- X-RATELIMIT-LIMIT-REQUESTS-XXX
|
||||||
x-ratelimit-limit-tokens:
|
x-ratelimit-limit-tokens:
|
||||||
- '150000000'
|
- X-RATELIMIT-LIMIT-TOKENS-XXX
|
||||||
x-ratelimit-remaining-requests:
|
x-ratelimit-remaining-requests:
|
||||||
- '29999'
|
- X-RATELIMIT-REMAINING-REQUESTS-XXX
|
||||||
x-ratelimit-remaining-tokens:
|
x-ratelimit-remaining-tokens:
|
||||||
- '149999874'
|
- X-RATELIMIT-REMAINING-TOKENS-XXX
|
||||||
x-ratelimit-reset-requests:
|
x-ratelimit-reset-requests:
|
||||||
- 2ms
|
- X-RATELIMIT-RESET-REQUESTS-XXX
|
||||||
x-ratelimit-reset-tokens:
|
x-ratelimit-reset-tokens:
|
||||||
- 0s
|
- X-RATELIMIT-RESET-TOKENS-XXX
|
||||||
x-request-id:
|
x-request-id:
|
||||||
- req_55d8eb91b4318245556b73d3f4c1e7c4
|
- X-REQUEST-ID-XXX
|
||||||
http_version: HTTP/1.1
|
status:
|
||||||
status_code: 200
|
code: 200
|
||||||
|
message: OK
|
||||||
version: 1
|
version: 1
|
||||||
|
|||||||
@@ -426,7 +426,8 @@ def test_tools_emits_error_events():
|
|||||||
def handle_tool_end(source, event):
|
def handle_tool_end(source, event):
|
||||||
with lock:
|
with lock:
|
||||||
received_events.append(event)
|
received_events.append(event)
|
||||||
if len(received_events) >= 48:
|
# Set event when we receive at least 1 error event
|
||||||
|
if len(received_events) >= 1:
|
||||||
all_events_received.set()
|
all_events_received.set()
|
||||||
|
|
||||||
class ErrorTool(BaseTool):
|
class ErrorTool(BaseTool):
|
||||||
@@ -458,10 +459,11 @@ def test_tools_emits_error_events():
|
|||||||
crew = Crew(agents=[agent], tasks=[task], name="TestCrew")
|
crew = Crew(agents=[agent], tasks=[task], name="TestCrew")
|
||||||
crew.kickoff()
|
crew.kickoff()
|
||||||
|
|
||||||
assert all_events_received.wait(timeout=5), (
|
assert all_events_received.wait(timeout=10), (
|
||||||
"Timeout waiting for tool usage error events"
|
"Timeout waiting for tool usage error events"
|
||||||
)
|
)
|
||||||
assert len(received_events) == 48
|
# At least one error event should be received (number varies by execution path)
|
||||||
|
assert len(received_events) >= 1
|
||||||
assert received_events[0].agent_key == agent.key
|
assert received_events[0].agent_key == agent.key
|
||||||
assert received_events[0].agent_role == agent.role
|
assert received_events[0].agent_role == agent.role
|
||||||
assert received_events[0].tool_name == "error_tool"
|
assert received_events[0].tool_name == "error_tool"
|
||||||
|
|||||||
Reference in New Issue
Block a user