mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-10-22 18:03:10 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e68cad380e | ||
|
|
96a78a97f0 | ||
|
|
337d2b634b | ||
|
|
475b704f95 | ||
|
|
b992ee9d6b | ||
|
|
d7fa8464c7 | ||
|
|
918c0589eb | ||
|
|
c9d3eb7ccf | ||
|
|
d216edb022 | ||
|
|
afa8783750 | ||
|
|
a661050464 | ||
|
|
c14f990098 | ||
|
|
26ccaf78ec | ||
|
|
12e98e1f3c | ||
|
|
efe27bd570 | ||
|
|
403ea385d7 | ||
|
|
7c67c2c6af | ||
|
|
e4f5c7cdf2 | ||
|
|
448d31cad9 | ||
|
|
b3667a8c09 | ||
|
|
313038882c |
No files matched your search
+2
-1
@@ -25,4 +25,5 @@ agentops.log
|
||||
test_flow.html
|
||||
crewairules.mdc
|
||||
plan.md
|
||||
conceptual_plan.md
|
||||
conceptual_plan.md
|
||||
build_image
|
||||
@@ -18,6 +18,18 @@ In the CrewAI framework, an `Agent` is an autonomous unit that can:
|
||||
Think of an agent as a specialized team member with specific skills, expertise, and responsibilities. For example, a `Researcher` agent might excel at gathering and analyzing information, while a `Writer` agent might be better at creating content.
|
||||
</Tip>
|
||||
|
||||
<Note type="info" title="Enterprise Enhancement: Visual Agent Builder">
|
||||
CrewAI Enterprise includes a Visual Agent Builder that simplifies agent creation and configuration without writing code. Design your agents visually and test them in real-time.
|
||||
|
||||

|
||||
|
||||
The Visual Agent Builder enables:
|
||||
- Intuitive agent configuration with form-based interfaces
|
||||
- Real-time testing and validation
|
||||
- Template library with pre-configured agent types
|
||||
- Easy customization of agent attributes and behaviors
|
||||
</Note>
|
||||
|
||||
## Agent Attributes
|
||||
|
||||
| Attribute | Parameter | Type | Description |
|
||||
@@ -233,7 +245,7 @@ custom_agent = Agent(
|
||||
|
||||
#### Code Execution
|
||||
- `allow_code_execution`: Must be True to run code
|
||||
- `code_execution_mode`:
|
||||
- `code_execution_mode`:
|
||||
- `"safe"`: Uses Docker (recommended for production)
|
||||
- `"unsafe"`: Direct execution (use only in trusted environments)
|
||||
|
||||
|
||||
@@ -18,6 +18,20 @@ CrewAI uses an event bus architecture to emit events throughout the execution li
|
||||
|
||||
When specific actions occur in CrewAI (like a Crew starting execution, an Agent completing a task, or a tool being used), the system emits corresponding events. You can register handlers for these events to execute custom code when they occur.
|
||||
|
||||
<Note type="info" title="Enterprise Enhancement: Prompt Tracing">
|
||||
CrewAI Enterprise provides a built-in Prompt Tracing feature that leverages the event system to track, store, and visualize all prompts, completions, and associated metadata. This provides powerful debugging capabilities and transparency into your agent operations.
|
||||
|
||||

|
||||
|
||||
With Prompt Tracing you can:
|
||||
- View the complete history of all prompts sent to your LLM
|
||||
- Track token usage and costs
|
||||
- Debug agent reasoning failures
|
||||
- Share prompt sequences with your team
|
||||
- Compare different prompt strategies
|
||||
- Export traces for compliance and auditing
|
||||
</Note>
|
||||
|
||||
## Creating a Custom Event Listener
|
||||
|
||||
To create a custom event listener, you need to:
|
||||
@@ -40,17 +54,17 @@ from crewai.utilities.events.base_event_listener import BaseEventListener
|
||||
class MyCustomListener(BaseEventListener):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
|
||||
def setup_listeners(self, crewai_event_bus):
|
||||
@crewai_event_bus.on(CrewKickoffStartedEvent)
|
||||
def on_crew_started(source, event):
|
||||
print(f"Crew '{event.crew_name}' has started execution!")
|
||||
|
||||
|
||||
@crewai_event_bus.on(CrewKickoffCompletedEvent)
|
||||
def on_crew_completed(source, event):
|
||||
print(f"Crew '{event.crew_name}' has completed execution!")
|
||||
print(f"Output: {event.output}")
|
||||
|
||||
|
||||
@crewai_event_bus.on(AgentExecutionCompletedEvent)
|
||||
def on_agent_execution_completed(source, event):
|
||||
print(f"Agent '{event.agent.role}' completed task")
|
||||
@@ -83,7 +97,7 @@ my_listener = MyCustomListener()
|
||||
|
||||
class MyCustomCrew:
|
||||
# Your crew implementation...
|
||||
|
||||
|
||||
def crew(self):
|
||||
return Crew(
|
||||
agents=[...],
|
||||
@@ -106,7 +120,7 @@ my_listener = MyCustomListener()
|
||||
|
||||
class MyCustomFlow(Flow):
|
||||
# Your flow implementation...
|
||||
|
||||
|
||||
@start()
|
||||
def first_step(self):
|
||||
# ...
|
||||
@@ -324,9 +338,9 @@ with crewai_event_bus.scoped_handlers():
|
||||
@crewai_event_bus.on(CrewKickoffStartedEvent)
|
||||
def temp_handler(source, event):
|
||||
print("This handler only exists within this context")
|
||||
|
||||
|
||||
# Do something that emits events
|
||||
|
||||
|
||||
# Outside the context, the temporary handler is removed
|
||||
```
|
||||
|
||||
|
||||
@@ -18,7 +18,8 @@ reason, and learn from past interactions.
|
||||
| **Long-Term Memory** | Preserves valuable insights and learnings from past executions, allowing agents to build and refine their knowledge over time. |
|
||||
| **Entity Memory** | Captures and organizes information about entities (people, places, concepts) encountered during tasks, facilitating deeper understanding and relationship mapping. Uses `RAG` for storing entity information. |
|
||||
| **Contextual Memory**| Maintains the context of interactions by combining `ShortTermMemory`, `LongTermMemory`, and `EntityMemory`, aiding in the coherence and relevance of agent responses over a sequence of tasks or a conversation. |
|
||||
| **User Memory** | Stores user-specific information and preferences, enhancing personalization and user experience. |
|
||||
| **External Memory** | Enables integration with external memory systems and providers (like Mem0), allowing for specialized memory storage and retrieval across different applications. Supports custom storage implementations for flexible memory management. |
|
||||
| **User Memory** | ⚠️ **DEPRECATED**: This component is deprecated and will be removed in a future version. Please use [External Memory](#using-external-memory) instead. |
|
||||
|
||||
## How Memory Systems Empower Agents
|
||||
|
||||
@@ -274,6 +275,102 @@ crew = Crew(
|
||||
)
|
||||
```
|
||||
|
||||
### Using External Memory
|
||||
|
||||
External Memory is a powerful feature that allows you to integrate external memory systems with your CrewAI applications. This is particularly useful when you want to use specialized memory providers or maintain memory across different applications.
|
||||
|
||||
#### Basic Usage with Mem0
|
||||
|
||||
The most common way to use External Memory is with Mem0 as the provider:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai.memory.external.external_memory import ExternalMemory
|
||||
|
||||
agent = Agent(
|
||||
role="You are a helpful assistant",
|
||||
goal="Plan a vacation for the user",
|
||||
backstory="You are a helpful assistant that can plan a vacation for the user",
|
||||
verbose=True,
|
||||
)
|
||||
task = Task(
|
||||
description="Give things related to the user's vacation",
|
||||
expected_output="A plan for the vacation",
|
||||
agent=agent,
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True,
|
||||
process=Process.sequential,
|
||||
memory=True,
|
||||
external_memory=ExternalMemory(
|
||||
embedder_config={"provider": "mem0", "config": {"user_id": "U-123"}} # you can provide an entire Mem0 configuration
|
||||
),
|
||||
)
|
||||
|
||||
crew.kickoff(
|
||||
inputs={"question": "which destination is better for a beach vacation?"}
|
||||
)
|
||||
```
|
||||
|
||||
#### Using External Memory with Custom Storage
|
||||
|
||||
You can also create custom storage implementations for External Memory. Here's an example of how to create a custom storage:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai.memory.external.external_memory import ExternalMemory
|
||||
from crewai.memory.storage.interface import Storage
|
||||
|
||||
|
||||
class CustomStorage(Storage):
|
||||
def __init__(self):
|
||||
self.memories = []
|
||||
|
||||
def save(self, value, metadata=None, agent=None):
|
||||
self.memories.append({"value": value, "metadata": metadata, "agent": agent})
|
||||
|
||||
def search(self, query, limit=10, score_threshold=0.5):
|
||||
# Implement your search logic here
|
||||
return []
|
||||
|
||||
def reset(self):
|
||||
self.memories = []
|
||||
|
||||
|
||||
# Create external memory with custom storage
|
||||
external_memory = ExternalMemory(
|
||||
storage=CustomStorage(),
|
||||
embedder_config={"provider": "mem0", "config": {"user_id": "U-123"}},
|
||||
)
|
||||
|
||||
agent = Agent(
|
||||
role="You are a helpful assistant",
|
||||
goal="Plan a vacation for the user",
|
||||
backstory="You are a helpful assistant that can plan a vacation for the user",
|
||||
verbose=True,
|
||||
)
|
||||
task = Task(
|
||||
description="Give things related to the user's vacation",
|
||||
expected_output="A plan for the vacation",
|
||||
agent=agent,
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True,
|
||||
process=Process.sequential,
|
||||
memory=True,
|
||||
external_memory=external_memory,
|
||||
)
|
||||
|
||||
crew.kickoff(
|
||||
inputs={"question": "which destination is better for a beach vacation?"}
|
||||
)
|
||||
```
|
||||
|
||||
|
||||
## Additional Embedding Providers
|
||||
|
||||
+14
-2
@@ -12,6 +12,18 @@ Tasks provide all necessary details for execution, such as a description, the ag
|
||||
|
||||
Tasks within CrewAI can be collaborative, requiring multiple agents to work together. This is managed through the task properties and orchestrated by the Crew's process, enhancing teamwork and efficiency.
|
||||
|
||||
<Note type="info" title="Enterprise Enhancement: Visual Task Builder">
|
||||
CrewAI Enterprise includes a Visual Task Builder in Crew Studio that simplifies complex task creation and chaining. Design your task flows visually and test them in real-time without writing code.
|
||||
|
||||

|
||||
|
||||
The Visual Task Builder enables:
|
||||
- Drag-and-drop task creation
|
||||
- Visual task dependencies and flow
|
||||
- Real-time testing and validation
|
||||
- Easy sharing and collaboration
|
||||
</Note>
|
||||
|
||||
### Task Execution Flow
|
||||
|
||||
Tasks can be executed in two ways:
|
||||
@@ -414,7 +426,7 @@ It's also important to note that the output of the final task of a crew becomes
|
||||
### Using `output_pydantic`
|
||||
The `output_pydantic` property allows you to define a Pydantic model that the task output should conform to. This ensures that the output is not only structured but also validated according to the Pydantic model.
|
||||
|
||||
Here’s an example demonstrating how to use output_pydantic:
|
||||
Here's an example demonstrating how to use output_pydantic:
|
||||
|
||||
```python Code
|
||||
import json
|
||||
@@ -495,7 +507,7 @@ In this example:
|
||||
### Using `output_json`
|
||||
The `output_json` property allows you to define the expected output in JSON format. This ensures that the task's output is a valid JSON structure that can be easily parsed and used in your application.
|
||||
|
||||
Here’s an example demonstrating how to use `output_json`:
|
||||
Here's an example demonstrating how to use `output_json`:
|
||||
|
||||
```python Code
|
||||
import json
|
||||
|
||||
+14
-2
@@ -15,6 +15,18 @@ A tool in CrewAI is a skill or function that agents can utilize to perform vario
|
||||
This includes tools from the [CrewAI Toolkit](https://github.com/joaomdmoura/crewai-tools) and [LangChain Tools](https://python.langchain.com/docs/integrations/tools),
|
||||
enabling everything from simple searches to complex interactions and effective teamwork among agents.
|
||||
|
||||
<Note type="info" title="Enterprise Enhancement: Tools Repository">
|
||||
CrewAI Enterprise provides a comprehensive Tools Repository with pre-built integrations for common business systems and APIs. Deploy agents with enterprise tools in minutes instead of days.
|
||||
|
||||

|
||||
|
||||
The Enterprise Tools Repository includes:
|
||||
- Pre-built connectors for popular enterprise systems
|
||||
- Custom tool creation interface
|
||||
- Version control and sharing capabilities
|
||||
- Security and compliance features
|
||||
</Note>
|
||||
|
||||
## Key Characteristics of Tools
|
||||
|
||||
- **Utility**: Crafted for tasks such as web searching, data analysis, content generation, and agent collaboration.
|
||||
@@ -79,7 +91,7 @@ research = Task(
|
||||
)
|
||||
|
||||
write = Task(
|
||||
description='Write an engaging blog post about the AI industry, based on the research analyst’s summary. Draw inspiration from the latest blog posts in the directory.',
|
||||
description='Write an engaging blog post about the AI industry, based on the research analyst's summary. Draw inspiration from the latest blog posts in the directory.',
|
||||
expected_output='A 4-paragraph blog post formatted in markdown with engaging, informative, and accessible content, avoiding complex jargon.',
|
||||
agent=writer,
|
||||
output_file='blog-posts/new_post.md' # The final blog post will be saved here
|
||||
@@ -141,7 +153,7 @@ Here is a list of the available tools and their descriptions:
|
||||
## Creating your own Tools
|
||||
|
||||
<Tip>
|
||||
Developers can craft `custom tools` tailored for their agent’s needs or
|
||||
Developers can craft `custom tools` tailored for their agent's needs or
|
||||
utilize pre-built options.
|
||||
</Tip>
|
||||
|
||||
|
||||
+1
-1
@@ -105,12 +105,12 @@
|
||||
"group": "Agent Monitoring & Observability",
|
||||
"pages": [
|
||||
"how-to/agentops-observability",
|
||||
"how-to/arize-phoenix-observability",
|
||||
"how-to/langfuse-observability",
|
||||
"how-to/langtrace-observability",
|
||||
"how-to/mlflow-observability",
|
||||
"how-to/openlit-observability",
|
||||
"how-to/opik-observability",
|
||||
"how-to/phoenix-observability",
|
||||
"how-to/portkey-observability",
|
||||
"how-to/weave-integration"
|
||||
]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
title: Agent Monitoring with Arize Phoenix
|
||||
description: Learn how to integrate Arize Phoenix with CrewAI via OpenTelemetry using OpenInference
|
||||
title: Arize Phoenix
|
||||
description: Arize Phoenix integration for CrewAI with OpenTelemetry and OpenInference
|
||||
icon: magnifying-glass-chart
|
||||
---
|
||||
|
||||
# Integrate Arize Phoenix with CrewAI
|
||||
# Arize Phoenix Integration
|
||||
|
||||
This guide demonstrates how to integrate **Arize Phoenix** with **CrewAI** using OpenTelemetry via the [OpenInference](https://github.com/openinference/openinference) SDK. By the end of this guide, you will be able to trace your CrewAI agents and easily debug your agents.
|
||||
|
||||
+23
-2
@@ -6,12 +6,12 @@ icon: wrench
|
||||
|
||||
<Note>
|
||||
**Python Version Requirements**
|
||||
|
||||
|
||||
CrewAI requires `Python >=3.10 and <3.13`. Here's how to check your version:
|
||||
```bash
|
||||
python3 --version
|
||||
```
|
||||
|
||||
|
||||
If you need to update Python, visit [python.org/downloads](https://python.org/downloads)
|
||||
</Note>
|
||||
|
||||
@@ -140,6 +140,27 @@ We recommend using the `YAML` template scaffolding for a structured approach to
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Enterprise Installation Options
|
||||
|
||||
<Note type="info">
|
||||
For teams and organizations, CrewAI offers enterprise deployment options that eliminate setup complexity:
|
||||
|
||||
### CrewAI Enterprise (SaaS)
|
||||
- Zero installation required - just sign up for free at [app.crewai.com](https://app.crewai.com)
|
||||
- Automatic updates and maintenance
|
||||
- Managed infrastructure and scaling
|
||||
- Build Crews with no Code
|
||||
|
||||
### CrewAI Factory (Self-hosted)
|
||||
- Containerized deployment for your infrastructure
|
||||
- Supports any hyperscaler including on prem depployments
|
||||
- Integration with your existing security systems
|
||||
|
||||
<Card title="Explore Enterprise Options" icon="building" href="https://crewai.com/enterprise">
|
||||
Learn about CrewAI's enterprise offerings and schedule a demo
|
||||
</Card>
|
||||
</Note>
|
||||
|
||||
## Next Steps
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
@@ -15,6 +15,7 @@ CrewAI empowers developers with both high-level simplicity and precise low-level
|
||||
|
||||
With over 100,000 developers certified through our community courses, CrewAI is rapidly becoming the standard for enterprise-ready AI automation.
|
||||
|
||||
|
||||
## How Crews Work
|
||||
|
||||
<Note>
|
||||
|
||||
+17
-1
@@ -200,6 +200,22 @@ Follow the steps below to get Crewing! 🚣♂️
|
||||
```
|
||||
</CodeGroup>
|
||||
</Step>
|
||||
|
||||
<Step title="Enterprise Alternative: Create in Crew Studio">
|
||||
For CrewAI Enterprise users, you can create the same crew without writing code:
|
||||
|
||||
1. Log in to your CrewAI Enterprise account (create a free account at [app.crewai.com](https://app.crewai.com))
|
||||
2. Open Crew Studio
|
||||
3. Type what is the automation you're tryign to build
|
||||
4. Create your tasks visually and connect them in sequence
|
||||
5. Configure your inputs and click "Download Code" or "Deploy"
|
||||
|
||||

|
||||
|
||||
<Card title="Try CrewAI Enterprise" icon="rocket" href="https://app.crewai.com">
|
||||
Start your free account at CrewAI Enterprise
|
||||
</Card>
|
||||
</Step>
|
||||
<Step title="View your final report">
|
||||
You should see the output in the console and the `report.md` file should be created in the root of your project with the final report.
|
||||
|
||||
@@ -271,7 +287,7 @@ Follow the steps below to get Crewing! 🚣♂️
|
||||
</Steps>
|
||||
|
||||
<Check>
|
||||
Congratulations!
|
||||
Congratulations!
|
||||
|
||||
You have successfully set up your crew project and are ready to start building your own agentic workflows!
|
||||
</Check>
|
||||
|
||||
@@ -2,12 +2,14 @@ import warnings
|
||||
|
||||
from crewai.agent import Agent
|
||||
from crewai.crew import Crew
|
||||
from crewai.crews.crew_output import CrewOutput
|
||||
from crewai.flow.flow import Flow
|
||||
from crewai.knowledge.knowledge import Knowledge
|
||||
from crewai.llm import LLM
|
||||
from crewai.llms.base_llm import BaseLLM
|
||||
from crewai.process import Process
|
||||
from crewai.task import Task
|
||||
from crewai.tasks.task_output import TaskOutput
|
||||
|
||||
warnings.filterwarnings(
|
||||
"ignore",
|
||||
@@ -19,10 +21,12 @@ __version__ = "0.108.0"
|
||||
__all__ = [
|
||||
"Agent",
|
||||
"Crew",
|
||||
"CrewOutput",
|
||||
"Process",
|
||||
"Task",
|
||||
"LLM",
|
||||
"BaseLLM",
|
||||
"Flow",
|
||||
"Knowledge",
|
||||
"TaskOutput",
|
||||
]
|
||||
@@ -207,6 +207,7 @@ class Agent(BaseAgent):
|
||||
self.crew._long_term_memory,
|
||||
self.crew._entity_memory,
|
||||
self.crew._user_memory,
|
||||
self.crew._external_memory,
|
||||
)
|
||||
memory = contextual_memory.build_context_for_task(task, context)
|
||||
if memory.strip() != "":
|
||||
|
||||
@@ -47,6 +47,27 @@ class CrewAgentExecutorMixin:
|
||||
print(f"Failed to add to short term memory: {e}")
|
||||
pass
|
||||
|
||||
def _create_external_memory(self, output) -> None:
|
||||
"""Create and save a external-term memory item if conditions are met."""
|
||||
if (
|
||||
self.crew
|
||||
and self.agent
|
||||
and self.task
|
||||
and hasattr(self.crew, "_external_memory")
|
||||
and self.crew._external_memory
|
||||
):
|
||||
try:
|
||||
self.crew._external_memory.save(
|
||||
value=output.text,
|
||||
metadata={
|
||||
"description": self.task.description,
|
||||
},
|
||||
agent=self.agent.role,
|
||||
)
|
||||
except Exception as e:
|
||||
print(f"Failed to add to external memory: {e}")
|
||||
pass
|
||||
|
||||
def _create_long_term_memory(self, output) -> None:
|
||||
"""Create and save long-term and entity memory items based on evaluation."""
|
||||
if (
|
||||
|
||||
@@ -129,6 +129,7 @@ class CrewAgentExecutor(CrewAgentExecutorMixin):
|
||||
|
||||
self._create_short_term_memory(formatted_answer)
|
||||
self._create_long_term_memory(formatted_answer)
|
||||
self._create_external_memory(formatted_answer)
|
||||
return {"output": formatted_answer.output}
|
||||
|
||||
def _invoke_loop(self) -> AgentFinish:
|
||||
|
||||
@@ -3,6 +3,10 @@ import subprocess
|
||||
import click
|
||||
|
||||
|
||||
# Be mindful about changing this.
|
||||
# on some enviorments we don't use this command but instead uv sync directly
|
||||
# so if you expect this to support more things you will need to replicate it there
|
||||
# ask @joaomdmoura if you are unsure
|
||||
def install_crew(proxy_options: list[str]) -> None:
|
||||
"""
|
||||
Install the crew by running the UV command to lock and install.
|
||||
|
||||
+24
-1
@@ -28,6 +28,7 @@ from crewai.knowledge.knowledge import Knowledge
|
||||
from crewai.knowledge.source.base_knowledge_source import BaseKnowledgeSource
|
||||
from crewai.llm import LLM, BaseLLM
|
||||
from crewai.memory.entity.entity_memory import EntityMemory
|
||||
from crewai.memory.external.external_memory import ExternalMemory
|
||||
from crewai.memory.long_term.long_term_memory import LongTermMemory
|
||||
from crewai.memory.short_term.short_term_memory import ShortTermMemory
|
||||
from crewai.memory.user.user_memory import UserMemory
|
||||
@@ -105,6 +106,7 @@ class Crew(BaseModel):
|
||||
_long_term_memory: Optional[InstanceOf[LongTermMemory]] = PrivateAttr()
|
||||
_entity_memory: Optional[InstanceOf[EntityMemory]] = PrivateAttr()
|
||||
_user_memory: Optional[InstanceOf[UserMemory]] = PrivateAttr()
|
||||
_external_memory: Optional[InstanceOf[ExternalMemory]] = PrivateAttr()
|
||||
_train: Optional[bool] = PrivateAttr(default=False)
|
||||
_train_iteration: Optional[int] = PrivateAttr()
|
||||
_inputs: Optional[Dict[str, Any]] = PrivateAttr(default=None)
|
||||
@@ -145,6 +147,10 @@ class Crew(BaseModel):
|
||||
default=None,
|
||||
description="An instance of the UserMemory to be used by the Crew to store/fetch memories of a specific user.",
|
||||
)
|
||||
external_memory: Optional[InstanceOf[ExternalMemory]] = Field(
|
||||
default=None,
|
||||
description="An Instance of the ExternalMemory to be used by the Crew",
|
||||
)
|
||||
embedder: Optional[dict] = Field(
|
||||
default=None,
|
||||
description="Configuration for the embedder to be used for the crew.",
|
||||
@@ -289,6 +295,12 @@ class Crew(BaseModel):
|
||||
if self.entity_memory
|
||||
else EntityMemory(crew=self, embedder_config=self.embedder)
|
||||
)
|
||||
self._external_memory = (
|
||||
# External memory doesn’t support a default value since it was designed to be managed entirely externally
|
||||
self.external_memory.set_crew(self)
|
||||
if self.external_memory
|
||||
else None
|
||||
)
|
||||
if (
|
||||
self.memory_config
|
||||
and "user_memory" in self.memory_config
|
||||
@@ -1167,6 +1179,7 @@ class Crew(BaseModel):
|
||||
"_short_term_memory",
|
||||
"_long_term_memory",
|
||||
"_entity_memory",
|
||||
"_external_memory",
|
||||
"_telemetry",
|
||||
"agents",
|
||||
"tasks",
|
||||
@@ -1313,7 +1326,15 @@ class Crew(BaseModel):
|
||||
RuntimeError: If memory reset operation fails.
|
||||
"""
|
||||
VALID_TYPES = frozenset(
|
||||
["long", "short", "entity", "knowledge", "kickoff_outputs", "all"]
|
||||
[
|
||||
"long",
|
||||
"short",
|
||||
"entity",
|
||||
"knowledge",
|
||||
"kickoff_outputs",
|
||||
"all",
|
||||
"external",
|
||||
]
|
||||
)
|
||||
|
||||
if command_type not in VALID_TYPES:
|
||||
@@ -1339,6 +1360,7 @@ class Crew(BaseModel):
|
||||
memory_systems = [
|
||||
("short term", getattr(self, "_short_term_memory", None)),
|
||||
("entity", getattr(self, "_entity_memory", None)),
|
||||
("external", getattr(self, "_external_memory", None)),
|
||||
("long term", getattr(self, "_long_term_memory", None)),
|
||||
("task output", getattr(self, "_task_output_handler", None)),
|
||||
("knowledge", getattr(self, "knowledge", None)),
|
||||
@@ -1366,6 +1388,7 @@ class Crew(BaseModel):
|
||||
"entity": (self._entity_memory, "entity"),
|
||||
"knowledge": (self.knowledge, "knowledge"),
|
||||
"kickoff_outputs": (self._task_output_handler, "task output"),
|
||||
"external": (self._external_memory, "external"),
|
||||
}
|
||||
|
||||
memory_system, name = reset_functions[memory_type]
|
||||
|
||||
@@ -2,5 +2,12 @@ from .entity.entity_memory import EntityMemory
|
||||
from .long_term.long_term_memory import LongTermMemory
|
||||
from .short_term.short_term_memory import ShortTermMemory
|
||||
from .user.user_memory import UserMemory
|
||||
from .external.external_memory import ExternalMemory
|
||||
|
||||
__all__ = ["UserMemory", "EntityMemory", "LongTermMemory", "ShortTermMemory"]
|
||||
__all__ = [
|
||||
"UserMemory",
|
||||
"EntityMemory",
|
||||
"LongTermMemory",
|
||||
"ShortTermMemory",
|
||||
"ExternalMemory",
|
||||
]
|
||||
@@ -1,6 +1,12 @@
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from crewai.memory import EntityMemory, LongTermMemory, ShortTermMemory, UserMemory
|
||||
from crewai.memory import (
|
||||
EntityMemory,
|
||||
ExternalMemory,
|
||||
LongTermMemory,
|
||||
ShortTermMemory,
|
||||
UserMemory,
|
||||
)
|
||||
|
||||
|
||||
class ContextualMemory:
|
||||
@@ -11,6 +17,7 @@ class ContextualMemory:
|
||||
ltm: LongTermMemory,
|
||||
em: EntityMemory,
|
||||
um: UserMemory,
|
||||
exm: ExternalMemory,
|
||||
):
|
||||
if memory_config is not None:
|
||||
self.memory_provider = memory_config.get("provider")
|
||||
@@ -20,6 +27,7 @@ class ContextualMemory:
|
||||
self.ltm = ltm
|
||||
self.em = em
|
||||
self.um = um
|
||||
self.exm = exm
|
||||
|
||||
def build_context_for_task(self, task, context) -> str:
|
||||
"""
|
||||
@@ -35,6 +43,7 @@ class ContextualMemory:
|
||||
context.append(self._fetch_ltm_context(task.description))
|
||||
context.append(self._fetch_stm_context(query))
|
||||
context.append(self._fetch_entity_context(query))
|
||||
context.append(self._fetch_external_context(query))
|
||||
if self.memory_provider == "mem0":
|
||||
context.append(self._fetch_user_context(query))
|
||||
return "\n".join(filter(None, context))
|
||||
@@ -106,3 +115,24 @@ class ContextualMemory:
|
||||
f"- {result['memory']}" for result in user_memories
|
||||
)
|
||||
return f"User memories/preferences:\n{formatted_memories}"
|
||||
|
||||
def _fetch_external_context(self, query: str) -> str:
|
||||
"""
|
||||
Fetches and formats relevant information from External Memory.
|
||||
Args:
|
||||
query (str): The search query to find relevant information.
|
||||
Returns:
|
||||
str: Formatted information as bullet points, or an empty string if none found.
|
||||
"""
|
||||
if self.exm is None:
|
||||
return ""
|
||||
|
||||
external_memories = self.exm.search(query)
|
||||
|
||||
if not external_memories:
|
||||
return ""
|
||||
|
||||
formatted_memories = "\n".join(
|
||||
f"- {result['memory']}" for result in external_memories
|
||||
)
|
||||
return f"External memories:\n{formatted_memories}"
|
||||
Whitespace-only changes.
+61
@@ -0,0 +1,61 @@
|
||||
from typing import TYPE_CHECKING, Any, Dict, Optional, Self
|
||||
|
||||
from crewai.memory.external.external_memory_item import ExternalMemoryItem
|
||||
from crewai.memory.memory import Memory
|
||||
from crewai.memory.storage.interface import Storage
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from crewai.memory.storage.mem0_storage import Mem0Storage
|
||||
|
||||
|
||||
class ExternalMemory(Memory):
|
||||
def __init__(self, storage: Optional[Storage] = None, **data: Any):
|
||||
super().__init__(storage=storage, **data)
|
||||
|
||||
@staticmethod
|
||||
def _configure_mem0(crew: Any, config: Dict[str, Any]) -> "Mem0Storage":
|
||||
from crewai.memory.storage.mem0_storage import Mem0Storage
|
||||
|
||||
return Mem0Storage(type="external", crew=crew, config=config)
|
||||
|
||||
@staticmethod
|
||||
def external_supported_storages() -> Dict[str, Any]:
|
||||
return {
|
||||
"mem0": ExternalMemory._configure_mem0,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def create_storage(crew: Any, embedder_config: Optional[Dict[str, Any]]) -> Storage:
|
||||
if not embedder_config:
|
||||
raise ValueError("embedder_config is required")
|
||||
|
||||
if "provider" not in embedder_config:
|
||||
raise ValueError("embedder_config must include a 'provider' key")
|
||||
|
||||
provider = embedder_config["provider"]
|
||||
supported_storages = ExternalMemory.external_supported_storages()
|
||||
if provider not in supported_storages:
|
||||
raise ValueError(f"Provider {provider} not supported")
|
||||
|
||||
return supported_storages[provider](crew, embedder_config.get("config", {}))
|
||||
|
||||
def save(
|
||||
self,
|
||||
value: Any,
|
||||
metadata: Optional[Dict[str, Any]] = None,
|
||||
agent: Optional[str] = None,
|
||||
) -> None:
|
||||
"""Saves a value into the external storage."""
|
||||
item = ExternalMemoryItem(value=value, metadata=metadata, agent=agent)
|
||||
super().save(value=item.value, metadata=item.metadata, agent=item.agent)
|
||||
|
||||
def reset(self) -> None:
|
||||
self.storage.reset()
|
||||
|
||||
def set_crew(self, crew: Any) -> Self:
|
||||
super().set_crew(crew)
|
||||
|
||||
if not self.storage:
|
||||
self.storage = self.create_storage(crew, self.embedder_config)
|
||||
|
||||
return self
|
||||
@@ -0,0 +1,13 @@
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
|
||||
class ExternalMemoryItem:
|
||||
def __init__(
|
||||
self,
|
||||
value: Any,
|
||||
metadata: Optional[Dict[str, Any]] = None,
|
||||
agent: Optional[str] = None,
|
||||
):
|
||||
self.value = value
|
||||
self.metadata = metadata
|
||||
self.agent = agent
|
||||
@@ -1,4 +1,4 @@
|
||||
from typing import Any, Dict, List, Optional
|
||||
from typing import Any, Dict, List, Optional, Self
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
@@ -9,6 +9,7 @@ class Memory(BaseModel):
|
||||
"""
|
||||
|
||||
embedder_config: Optional[Dict[str, Any]] = None
|
||||
crew: Optional[Any] = None
|
||||
|
||||
storage: Any
|
||||
|
||||
@@ -36,3 +37,7 @@ class Memory(BaseModel):
|
||||
return self.storage.search(
|
||||
query=query, limit=limit, score_threshold=score_threshold
|
||||
)
|
||||
|
||||
def set_crew(self, crew: Any) -> Self:
|
||||
self.crew = crew
|
||||
return self
|
||||
@@ -11,15 +11,20 @@ class Mem0Storage(Storage):
|
||||
Extends Storage to handle embedding and searching across entities using Mem0.
|
||||
"""
|
||||
|
||||
def __init__(self, type, crew=None):
|
||||
def __init__(self, type, crew=None, config=None):
|
||||
super().__init__()
|
||||
|
||||
if type not in ["user", "short_term", "long_term", "entities"]:
|
||||
raise ValueError("Invalid type for Mem0Storage. Must be 'user' or 'agent'.")
|
||||
supported_types = ["user", "short_term", "long_term", "entities", "external"]
|
||||
if type not in supported_types:
|
||||
raise ValueError(
|
||||
f"Invalid type '{type}' for Mem0Storage. Must be one of: "
|
||||
+ ", ".join(supported_types)
|
||||
)
|
||||
|
||||
self.memory_type = type
|
||||
self.crew = crew
|
||||
self.memory_config = crew.memory_config
|
||||
self.config = config or {}
|
||||
# TODO: Memory config will be removed in the future the config will be passed as a parameter
|
||||
self.memory_config = self.config or getattr(crew, "memory_config", {}) or {}
|
||||
|
||||
# User ID is required for user memory type "user" since it's used as a unique identifier for the user.
|
||||
user_id = self._get_user_id()
|
||||
@@ -27,7 +32,7 @@ class Mem0Storage(Storage):
|
||||
raise ValueError("User ID is required for user memory type")
|
||||
|
||||
# API key in memory config overrides the environment variable
|
||||
config = self.memory_config.get("config", {})
|
||||
config = self._get_config()
|
||||
mem0_api_key = config.get("api_key") or os.getenv("MEM0_API_KEY")
|
||||
mem0_org_id = config.get("org_id")
|
||||
mem0_project_id = config.get("project_id")
|
||||
@@ -56,26 +61,34 @@ class Mem0Storage(Storage):
|
||||
def save(self, value: Any, metadata: Dict[str, Any]) -> None:
|
||||
user_id = self._get_user_id()
|
||||
agent_name = self._get_agent_name()
|
||||
if self.memory_type == "user":
|
||||
self.memory.add(value, user_id=user_id, metadata={**metadata})
|
||||
elif self.memory_type == "short_term":
|
||||
agent_name = self._get_agent_name()
|
||||
self.memory.add(
|
||||
value, agent_id=agent_name, metadata={"type": "short_term", **metadata}
|
||||
)
|
||||
params = None
|
||||
if self.memory_type == "short_term":
|
||||
params = {
|
||||
"agent_id": agent_name,
|
||||
"infer": False,
|
||||
"metadata": {"type": "short_term", **metadata},
|
||||
}
|
||||
elif self.memory_type == "long_term":
|
||||
agent_name = self._get_agent_name()
|
||||
self.memory.add(
|
||||
value,
|
||||
agent_id=agent_name,
|
||||
infer=False,
|
||||
metadata={"type": "long_term", **metadata},
|
||||
)
|
||||
params = {
|
||||
"agent_id": agent_name,
|
||||
"infer": False,
|
||||
"metadata": {"type": "long_term", **metadata},
|
||||
}
|
||||
elif self.memory_type == "entities":
|
||||
entity_name = self._get_agent_name()
|
||||
self.memory.add(
|
||||
value, user_id=entity_name, metadata={"type": "entity", **metadata}
|
||||
)
|
||||
params = {
|
||||
"agent_id": agent_name,
|
||||
"infer": False,
|
||||
"metadata": {"type": "entity", **metadata},
|
||||
}
|
||||
elif self.memory_type == "external":
|
||||
params = {
|
||||
"user_id": user_id,
|
||||
"agent_id": agent_name,
|
||||
"metadata": {"type": "external", **metadata},
|
||||
}
|
||||
|
||||
if params:
|
||||
self.memory.add(value, **params | {"output_format": "v1.1"})
|
||||
|
||||
def search(
|
||||
self,
|
||||
@@ -84,41 +97,43 @@ class Mem0Storage(Storage):
|
||||
score_threshold: float = 0.35,
|
||||
) -> List[Any]:
|
||||
params = {"query": query, "limit": limit}
|
||||
if self.memory_type == "user":
|
||||
user_id = self._get_user_id()
|
||||
if user_id := self._get_user_id():
|
||||
params["user_id"] = user_id
|
||||
elif self.memory_type == "short_term":
|
||||
agent_name = self._get_agent_name()
|
||||
|
||||
agent_name = self._get_agent_name()
|
||||
if self.memory_type == "short_term":
|
||||
params["agent_id"] = agent_name
|
||||
params["metadata"] = {"type": "short_term"}
|
||||
elif self.memory_type == "long_term":
|
||||
agent_name = self._get_agent_name()
|
||||
params["agent_id"] = agent_name
|
||||
params["metadata"] = {"type": "long_term"}
|
||||
elif self.memory_type == "entities":
|
||||
agent_name = self._get_agent_name()
|
||||
params["agent_id"] = agent_name
|
||||
params["metadata"] = {"type": "entity"}
|
||||
elif self.memory_type == "external":
|
||||
params["agent_id"] = agent_name
|
||||
params["metadata"] = {"type": "external"}
|
||||
|
||||
# Discard the filters for now since we create the filters
|
||||
# automatically when the crew is created.
|
||||
results = self.memory.search(**params)
|
||||
return [r for r in results if r["score"] >= score_threshold]
|
||||
|
||||
def _get_user_id(self):
|
||||
if self.memory_type == "user":
|
||||
if hasattr(self, "memory_config") and self.memory_config is not None:
|
||||
return self.memory_config.get("config", {}).get("user_id")
|
||||
else:
|
||||
return None
|
||||
return None
|
||||
def _get_user_id(self) -> str:
|
||||
return self._get_config().get("user_id", "")
|
||||
|
||||
def _get_agent_name(self):
|
||||
agents = self.crew.agents if self.crew else []
|
||||
def _get_agent_name(self) -> str:
|
||||
if not self.crew:
|
||||
return ""
|
||||
|
||||
agents = self.crew.agents
|
||||
agents = [self._sanitize_role(agent.role) for agent in agents]
|
||||
agents = "_".join(agents)
|
||||
return agents
|
||||
|
||||
def _get_config(self) -> Dict[str, Any]:
|
||||
return self.config or getattr(self, "memory_config", {}).get("config", {}) or {}
|
||||
|
||||
def reset(self):
|
||||
if self.memory:
|
||||
self.memory.reset()
|
||||
@@ -1,3 +1,4 @@
|
||||
import warnings
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from crewai.memory.memory import Memory
|
||||
@@ -12,6 +13,12 @@ class UserMemory(Memory):
|
||||
"""
|
||||
|
||||
def __init__(self, crew=None):
|
||||
warnings.warn(
|
||||
"UserMemory is deprecated and will be removed in a future version. "
|
||||
"Please use ExternalMemory instead.",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
try:
|
||||
from crewai.memory.storage.mem0_storage import Mem0Storage
|
||||
except ImportError:
|
||||
@@ -48,6 +55,4 @@ class UserMemory(Memory):
|
||||
try:
|
||||
self.storage.reset()
|
||||
except Exception as e:
|
||||
raise Exception(
|
||||
f"An error occurred while resetting the user memory: {e}"
|
||||
)
|
||||
raise Exception(f"An error occurred while resetting the user memory: {e}")
|
||||
@@ -137,13 +137,11 @@ def CrewBase(cls: T) -> T:
|
||||
all_functions, "is_cache_handler"
|
||||
)
|
||||
callbacks = self._filter_functions(all_functions, "is_callback")
|
||||
agents = self._filter_functions(all_functions, "is_agent")
|
||||
|
||||
for agent_name, agent_info in self.agents_config.items():
|
||||
self._map_agent_variables(
|
||||
agent_name,
|
||||
agent_info,
|
||||
agents,
|
||||
llms,
|
||||
tool_functions,
|
||||
cache_handler_functions,
|
||||
@@ -154,7 +152,6 @@ def CrewBase(cls: T) -> T:
|
||||
self,
|
||||
agent_name: str,
|
||||
agent_info: Dict[str, Any],
|
||||
agents: Dict[str, Callable],
|
||||
llms: Dict[str, Callable],
|
||||
tool_functions: Dict[str, Callable],
|
||||
cache_handler_functions: Dict[str, Callable],
|
||||
@@ -172,9 +169,10 @@ def CrewBase(cls: T) -> T:
|
||||
]
|
||||
|
||||
if function_calling_llm := agent_info.get("function_calling_llm"):
|
||||
self.agents_config[agent_name]["function_calling_llm"] = agents[
|
||||
function_calling_llm
|
||||
]()
|
||||
try:
|
||||
self.agents_config[agent_name]["function_calling_llm"] = llms[function_calling_llm]()
|
||||
except KeyError:
|
||||
self.agents_config[agent_name]["function_calling_llm"] = function_calling_llm
|
||||
|
||||
if step_callback := agent_info.get("step_callback"):
|
||||
self.agents_config[agent_name]["step_callback"] = callbacks[
|
||||
|
||||
@@ -8,6 +8,7 @@ researcher:
|
||||
developments in {topic}. Known for your ability to find the most relevant
|
||||
information and present it in a clear and concise manner.
|
||||
verbose: true
|
||||
function_calling_llm: "local_llm"
|
||||
|
||||
reporting_analyst:
|
||||
role: >
|
||||
@@ -18,4 +19,5 @@ reporting_analyst:
|
||||
You're a meticulous analyst with a keen eye for detail. You're known for
|
||||
your ability to turn complex data into clear and concise reports, making
|
||||
it easy for others to understand and act on the information you provide.
|
||||
verbose: true
|
||||
verbose: true
|
||||
function_calling_llm: "online_llm"
|
||||
@@ -0,0 +1,15 @@
|
||||
"""Test that all public API classes are properly importable."""
|
||||
|
||||
|
||||
def test_task_output_import():
|
||||
"""Test that TaskOutput can be imported from crewai."""
|
||||
from crewai import TaskOutput
|
||||
|
||||
assert TaskOutput is not None
|
||||
|
||||
|
||||
def test_crew_output_import():
|
||||
"""Test that CrewOutput can be imported from crewai."""
|
||||
from crewai import CrewOutput
|
||||
|
||||
assert CrewOutput is not None
|
||||
@@ -0,0 +1,652 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '{"input": ["Perform a search on specific topics."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '115'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
7,\n \"total_tokens\": 7\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929ab3937d457e01-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:05:28 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=kDn7w.xxhfUOdeywOX91X.QPh7jJ.MWIdK59RMswo4I-1743537928-1.0.1.1-fsXh4ayfrGxPX9d7yv7wOTJao.R7zWidYJkbOjSnLbNrs5DIziftd8U4EkvHFafefe4dS33kmwVZZvBBsSA0iTNy8kTCh4ouZCTCBGdqiJM;
|
||||
path=/; expires=Tue, 01-Apr-25 20:35:28 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=jlKaHr6Qf4Cpn7uR7FBiNw0lhnPCPxgSGLHX33FTNZY-1743537928631-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:
|
||||
- '196'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-68459c4c98-rcmtr
|
||||
x-envoy-upstream-service-time:
|
||||
- '165'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999991'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_4e0afe109cad076a0738b5c0cf2d3325
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["Perform a search on specific topics."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '115'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"6lr3O9X5arxcDzA82U7nvC7Fcr0jUrE7JAA5vQBSTj3yNxg9fhYmPQf8xrtBBKu8zZDAvCGrvDyFNOs8JMb9OoEIgLzkNR89dGKWPXO0Dj2dh1E9DK1SvJMlOrymdZw8sXQRvd2LprwG6xw9g3U5PbAprDwf7Iq6gt/uPGV42rzZTme9leRrvKzUL7z+khy7OMTnuyz1FjxTvkK8MPgaOz2eBDusmvQ7/uSUPInDIjxqKWa9X7Ykvaw3Ur0f7Aq9axEpPajRqzw1RoQ9FkmlvAyt0rx+eci7SHRoPYFrojxuZqW9yZ7mu8U4QD0T9Cg9BuscvNcsk7xoBxI9WAysuoeQ+rz5Cni82pnMvFXIWTxMFEo8ZXhaPXIv7rsZUzy8vislPfT2ybxPzOg8q3igvD5dNj0vSpM7NUaEvWgwebwZ8Jk9lnq2PLl6mbxyBoc8hrkLvQDvqzzJjTy9SW1VPF5rP7w6vVS9pvB7vVYTv7uEhuM4iYlnvCgDPT2z4Uq8RPaEPD+omzuaMtW8YXXWPfRZ7Lsd8x28u3OGPKMgoLxztA49FqzHPF4IHbyV5Os87a/zvGjNVr1QenC9PZ4EvV9TgjwZU7w8JMZ9vKjRKzyvQem82U7nvPiWK7x/1dc8V/uBvb7x6TtMsae8dXPAu2yFdTynhka85alrO3KB5rzrQjq84+o5vdJ7Bz1BBKu6XggdPYZ/UL3a0we9v3aKvJEsTb1xDRq8SK4jvUT2BLzHzgo8QcpvPCmxxLvg4KI9cszLvPj5Tb3L+nW8YK8RvDLxBz3hQ0W8uPX4vNPvU73P7E+9PBnkPDT7njsXlIo7/90BuncJC7zsnkm9MvEHvLwhDrxb/oU8GVO8OwVm/DkV7ZU8bbgdumyF9buazzI7w5FLvQjkCbwyVCq7b9pxvEwUSj0cqDi7fS5jPLqLQzw9ngS8vzzPPCYKUL3Ah7Q7wkbmvM3z4jx+ivK8dr6lvHSLfbx4GjW9VKaFPPiFgbzGIAO9qz7lu4Lf7rgrRw89K3B2PSwGQT3fStg8TV+vvFmAeLxHAJy8xIq4O9WWyDzPJos8Qk+QPDD4GjzeOS49zniDu2fU6TwmXEg80t4pPUob3bwuYlC9otU6PT4SUTwb+rA8DBD1PLDvcL06vVS8JAA5vYN1OTtYDCw7G13TuwZOP7y3Nse86YMIPQruID0UPw49iYlnPXN60zwRXt68v59xPIU0azwPjoI9T6MBPTlJCD1RYjM8tzZHPeyeybzuNBS9D7dpvQZOvzsA7yu9RhhZvVv+hb3VM6Y70OW8u9klAD1LAyC8ClFDORuXDr12viU9qi27O6/eRjy7c4Y7HbliPH/V17yJJkU9RB9svZhzI71s0Nq86eaqvNCCmrzd7kg7IQ7fPJYXFDw0wWO960K6vdWWyLxgr5G8i805PPKaurze1os7VQKVvGCvkTzIfJI9ch5EvTgW4Lyi1bq78omQu8Dq1jy306Q8zyYLvQiqzrwWD2q7JMZ9vHwdOTsrRw89tzbHPKHczTvEUP28aRi8PEq4OjtISwE7DZWVvE5wWTyqLbu8GAhXOwOWIDxrrgY9Z9Tpu1KtGDve//I8BaA3PPs9oLyn6Wg9q3ggvL88zzyklGw8bCJTvBZJJb3QSN88NakmvKYqtzyb4Fy6A5agPPugwrx5dsS85twTvSBIGj3o/mc9r95Gu3MXMb1R/xA9Aq7dvKxxDT0nG3o7eLeSPLzn0jq9Mji8VbevusojhzzHzoq8JUseO4VuJrvlqWu9L621vJEsTb3i2Q+9IgfMO8+aVz3xoc28VWU3vOPquTy306S8nYfRu0+7Pr2kzic8SfmIPI+/E7wrcHa7LVEmvRUWfTxRYrM72tMHvPHbiLyreCC8Qw7COlkdVr212rc8WxbDOyTGfTokxv07M3Z+PPEE8LwanqE8KpkHvPKJED0oZt+7iWAAO/8G6bz0MAU9sdezu0fG4DwfFfK7zzc1PPBW6DwknRa9y5dTPQNEqLy2JZ08eOB5PMfOij1yL+47+DOJvcme5rzyNxi9JMZ9PHi3Ej28SvW7+o8YvMXVnbxKVZg8xoOlvPryury+K6U8MQnFu1Ua0rsmCtC7iQ4IPfSTpzwC6Bg8ezX2OyBImrzR9uY8b3dPvQDvKzzS3im860K6PMnYobyicpg8nepzPDRewbtmYB28ch5EvCBImjx6Xgc9yoYpvarKmLzGgyU9TqqUPZfFGz01qaa7k+t+PAlY1jsZtl47mmyQPKqQXbxAViM9/IiFPUQf7LzPiS09BT2VvO40lLxBZ0089JMnvF986bwiQQe9PFOfvaV8r7sUPw49PZ4EPR1WQD3yYP+85alrPBpkZjwt7gM8n4A+vNPvU7xIEUY8WYD4N+ftvTzRMKK89FlsO55vlL3PJgs8BaC3vHvS0zuFNGu8+z0gu4J8TDw1b+s8MgIyPAxKMD1aaDs9aM1WPKXfUTx7bzE9zqHqvPgziTykzic8nSQvPCpfTLyvQek8sjNDPAmjOzzJnmY8WYB4PC9KEz0j7w48Aks7vIHORL2qkF299lJZPD6vrrz4lis9U77CPPZSWTwwW709k8IXvSPvDj20j9I8pM4nPHpeh72qkN08xFB9PNJ7h7yr20K8uXoZvR4ESL3wkKO8PZ4EPQdf6bzLNDG9jSlJuygDvbzoOCM9T7s+PIXRyDv5Cvg8tXcVu5eLYDrx2wg9Ff6/vKyJyrw1b+u8PZ6EvB254jwWD+q7D1RHvfL93DuPIja8Z7ysuvgziTwj7w67VAkovHDCtLxVZTc85eOmvIVuJjweBEi9WgWZvCYK0Lz+9T680TCiuucFezwWD+q7fbMDvfiWK71ozVa9VcjZPCFZxLyUcJ+8b9pxvFck6Txl23w89oyUOyIHzDzP1JK8lbuEOzBbvTvVhZ48+Ogjvat4ID3O2yW9HVZAPDOwOTwxQ4A8ezV2uyxp47yfHZy9BT2VPFMhZTww+Jo8E7rtu5W7hDwyVKq7CfUzO7PhSrpb/gU7nHanO38PE7zO26W8EZgZOoofMr3y7LK8GGv5PFthqLz/o0Y8zS2euw/xpLwlrsC6yHwSvXgaNby+jse7rJr0PAGdM7uw7/C8b3dPvTRewTn+R7c87NgEPdtHVL0u/608wOpWPFVlNzzyiRC88omQuSpfzLro1YA7nBMFvfEE8Dv8iIW8siIZPeNN3LpygeY7ezV2ufzrJzwTum08j7+TO+2GjLzj6jk9ZsO/OtjaGr1RxVU7HxVyvdsvF7zqMZA8KpmHvJXk67wECu28sO/wPDT7nry8IQ49RwCcvGUVuLx+FiY9m+DcPINkj7wfFfI7FVA4vUnQdzzsOyc82+Sxu+ftPT2RLE091YWevMWbYrxWE7889rX7PHaE6rx0xbi7qG6JO9Sd2zwso548Or1UPIa5i7xODbc7W8RKPPQwhTsvShO70qRuvLtzBjtgZCy7MgKyOidVNTxlshU78T4rut45rjsSRiG7AZ2zvODgIr3+R7c81ywTu1awHD1uyUe7AFJOvSH2IbzF1R09LbTIO/RZ7DyYEAG8pM4nPb59nb309sk8JUueO4ULBDy7cwY9hTRrPPAtAT3bgY+8/6PGPNdVejxi0WW8HmdqPCb5pbydwYy8yiMHPf8G6Ty6KKG7stCgPDhQmzxlspW7B/xGOzN2frxYqQk8YtHlu/lEMzx8upa8G6/LvN0oBLwyt8y7vIQwvcx/ljyylmW70EhfPA88iryQuAC8kSxNvIa5Cz2DEhc9P27gPNrTh7yo0au8hW6mvNzdHr1Ge/s8BuucvBZJpTyiON08ZAQOveWABD23Nse8pti+Op41WTwrcHa8iHi9vBJGIby/dgq9BFXSvFck6TprdMu7X3zpuzdoWDzXVXo8CUCZPGF1Vrut5dm8uXqZPLXaN70W5gK8pDFKPFB68Lyb4Nw8bNDaPKcjJLz0MAW9/qrZutklAL1J0Pc8leRrvM/UEjne1os8dMW4vDa6UDz+qtk6myvCu2m1GT0xQwC9LsVyvMU4wLu26+E8dluDO5TTQTvYoN88fcvAvGAqcTyTwpc8MxNcO3VzQLzxBPC8vsgCvKY74bwxpqI7reXZvEnQdzznUOA8LVGmPKyJyjzk++M8TfwMPbfTJLydwQw9+EtGvC7F8jz1pNE8bgODvCb5Jbwhqzw9Pq+uPJB+Rb0SqUO8grYHvOjVALzyT9W8tI9SPBQ/DrwqX8y8mNbFO/XejLzRk0S911X6vNLeKT3qMZC847B+u4zeYzu1Pdo7GEISPaRrhbyRLE26mHMjPYZ/0LwfTy28vuA/PK7NnDyTwpc8/6NGPCigGr1NXy+92+QxvN0oBDw2ulC8YxxLvDj+Ij3gfQC970W+vHFwvLxJv008dMW4PGAqcbweoaW6BrHhvH2zAzt4ZZo8edlmO5rPMjw8GeS7JJ0WPL+fcby2iD+8k+t+PEfG4DwD4QU8aDB5PERZpzszsLk7FKKwPET2BL2h3M084abnPJm+CD29zxW9IVnEPA5DHTx6wSk9VbcvPEWkDLwknZa7woAhvTKfD72VL1G8xuZHu8nYITw3aNg8zze1vOcF+7z9X/S8OiD3OuaiWDwYQhI89FlsvNZEULoR+zu5/ZkvPWXb/DzJjby83v9yu9/ntbx+YYs8Pws+vKzDBT1tuJ0886tkvNDlPDycE4W8NleuvB4+AzwFPRW7qDROvIYcLr0E8i89QhVVvbndOz0knZY8IP00vGCvkTxVVA08sjPDu8SKuDsZtl479FlsvEIV1bvuNJS8uMwRvVzV9Lz+WGG8LVEmPbtzBjwu/y09B1/pOoK2Bz1NJXQ80IIavX/V17wPjgI8XHLSPNH25ju+8Wk82y8XvPiWK7wZ8Bk8BPKvvE+jAbyVL9E8HEWWvA8CT7xwwrS8lYFJPLine truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
7,\n \"total_tokens\": 7\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929ab3965ba47dfb-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:05:28 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=5_dVmaW1w6ShSd0cQsx_6UToMPBGZYGCn4AuQqRKApI-1743537928-1.0.1.1-YIeREsG1o9zTcT.Da4V5YgMnEFTLJSubxSv2Xcrby4js5WOWsqkwEmd0mTErAR4yN_tlR_lkbq6eyVvjW4Qr9qCtlB1sdZR9q9sKHTfQTLc;
|
||||
path=/; expires=Tue, 01-Apr-25 20:35:28 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=NCI5ttxt2Z4JzyWS0cwOIKu4mvXXODEDgwZ4n6e3Bw4-1743537928979-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:
|
||||
- '103'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-779fc7d87c-zw8xf
|
||||
x-envoy-upstream-service-time:
|
||||
- '74'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999991'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_d5345faa4b8024f93e46c9695cff0375
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: !!binary |
|
||||
CtoMCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSsQwKEgoQY3Jld2FpLnRl
|
||||
bGVtZXRyeRKXCAoQm8h3kcZlX+KG8GXz4BaguxIIpiZBM32xbrMqDENyZXcgQ3JlYXRlZDABOagr
|
||||
ERR8SjIYQdgDQBR8SjIYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTA4LjBKGgoOcHl0aG9uX3Zl
|
||||
cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDA3YTcxNzY4Y2M0YzkzZWFiM2IzMWUzYzhk
|
||||
MjgzMmM2SjEKB2NyZXdfaWQSJgokY2EyZDBlMmUtMDY3NS00Yjk3LTljNGItMjllN2UxMGY3YTE5
|
||||
ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAUoaChRjcmV3
|
||||
X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUo6ChBjcmV3
|
||||
X2ZpbmdlcnByaW50EiYKJDVhYzNjN2JlLWMxZWUtNDRmYS1iMzEzLTVmMzRjODA3ZDAwYko7Chtj
|
||||
cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0wMVQxNzowNTowMS45OTIwODlK
|
||||
ywIKC2NyZXdfYWdlbnRzErsCCrgCW3sia2V5IjogIjAyZGYxM2UzNjcxMmFiZjUxZDIzOGZlZWJh
|
||||
YjFjYTI2IiwgImlkIjogIjJiZDZmZTY1LTRkYWItNDVhYy04ZTMxLTljNzU2NThlOTdiOCIsICJy
|
||||
b2xlIjogIlJlc2VhcmNoZXIiLCAidmVyYm9zZT8iOiB0cnVlLCAibWF4X2l0ZXIiOiAyNSwgIm1h
|
||||
eF9ycG0iOiBudWxsLCAiZnVuY3Rpb25fY2FsbGluZ19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8i
|
||||
LCAiZGVsZWdhdGlvbl9lbmFibGVkPyI6IGZhbHNlLCAiYWxsb3dfY29kZV9leGVjdXRpb24/Ijog
|
||||
ZmFsc2UsICJtYXhfcmV0cnlfbGltaXQiOiAyLCAidG9vbHNfbmFtZXMiOiBbXX1dSv8BCgpjcmV3
|
||||
X3Rhc2tzEvABCu0BW3sia2V5IjogIjdiNDJkZjNjM2M3NGMyMWM4OTQ4MGUwYzA3MDUzODVmIiwg
|
||||
ImlkIjogIjcwMTEzZTAwLWRlN2EtNGY0Ny1iZTBmLTU2ZWE1YmFhYTA4MiIsICJhc3luY19leGVj
|
||||
dXRpb24/IjogZmFsc2UsICJodW1hbl9pbnB1dD8iOiBmYWxzZSwgImFnZW50X3JvbGUiOiAiUmVz
|
||||
ZWFyY2hlciIsICJhZ2VudF9rZXkiOiAiMDJkZjEzZTM2NzEyYWJmNTFkMjM4ZmVlYmFiMWNhMjYi
|
||||
LCAidG9vbHNfbmFtZXMiOiBbXX1degIYAYUBAAEAABKABAoQUIi202VgKCuffOL3MDckcxIIvGhx
|
||||
5lv94IYqDFRhc2sgQ3JlYXRlZDABOVDbgRR8SjIYQWjLgxR8SjIYSi4KCGNyZXdfa2V5EiIKIDA3
|
||||
YTcxNzY4Y2M0YzkzZWFiM2IzMWUzYzhkMjgzMmM2SjEKB2NyZXdfaWQSJgokY2EyZDBlMmUtMDY3
|
||||
NS00Yjk3LTljNGItMjllN2UxMGY3YTE5Si4KCHRhc2tfa2V5EiIKIDdiNDJkZjNjM2M3NGMyMWM4
|
||||
OTQ4MGUwYzA3MDUzODVmSjEKB3Rhc2tfaWQSJgokNzAxMTNlMDAtZGU3YS00ZjQ3LWJlMGYtNTZl
|
||||
YTViYWFhMDgySjoKEGNyZXdfZmluZ2VycHJpbnQSJgokNWFjM2M3YmUtYzFlZS00NGZhLWIzMTMt
|
||||
NWYzNGM4MDdkMDBiSjoKEHRhc2tfZmluZ2VycHJpbnQSJgokZTFiNGYwNTUtNTI4Ny00YmQ1LWJh
|
||||
YzUtOGE0MjQ2M2I0OTRmSjsKG3Rhc2tfZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0
|
||||
LTAxVDE3OjA1OjAxLjk5MTM1NEo7ChFhZ2VudF9maW5nZXJwcmludBImCiRiM2M0ODhkOC1kOTEz
|
||||
LTQ0ZTEtYWE4NC05ZWRlMmY4ZmQ1N2V6AhgBhQEAAQAA
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '1629'
|
||||
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:
|
||||
- Tue, 01 Apr 2025 20:05:29 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"messages": [{"role": "system", "content": "You are Researcher. You are
|
||||
a researcher at a leading tech think tank.\nYour personal goal is: Search relevant
|
||||
data and provide results\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: Perform a search
|
||||
on specific topics.\n\nThis is the expected criteria for your final answer:
|
||||
A list of relevant URLs based on the search query.\nyou MUST return the actual
|
||||
complete content as the final answer, not a summary.\n\n# Useful context: \nExternal
|
||||
memories:\n\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", "stop": ["\nObservation:"]}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '984'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"id\": \"chatcmpl-BHc9RXfB5Sj2QaKl5AVUIW2X08Lfc\",\n \"object\":
|
||||
\"chat.completion\",\n \"created\": 1743537929,\n \"model\": \"gpt-4o-2024-08-06\",\n
|
||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||
\"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal
|
||||
Answer: I am unable to access external websites directly to extract URLs or
|
||||
search the internet; however, I can guide you on how to search for the required
|
||||
topics using search engines like Google. You would typically input your specific
|
||||
query into the search engine to receive a list of URLs and content related to
|
||||
your topic. Here\u2019s a step-by-step approach:\\n\\n1. Go to a search engine
|
||||
like Google.\\n2. Enter your specific search query in the search bar.\\n3. Review
|
||||
the search results and identify URLs that are relevant to your topic.\\n4. Click
|
||||
on the links to access the actual content from those URLs.\\n\\nRemember to
|
||||
use specific keywords and phrases that are closely related to your research
|
||||
topic to narrow down your search results for more relevant URLs.\",\n \"refusal\":
|
||||
null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\":
|
||||
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 185,\n \"completion_tokens\":
|
||||
161,\n \"total_tokens\": 346,\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_898ac29719\"\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929ab399fe8d7dee-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:05:31 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=Hxm6ignpjzUPY4_F0hNOxDI6blf0OOBnlpX09HJLkXw-1743537931-1.0.1.1-EnMojyC4HcsGaIfLZ3AM11JeKT5P2fCrPy4P_cEuqem7t6aJ66exdhSjbXn7cY_0WGDzFZMXOd2FiX1cdOOotV7bTaiKamm_kbxZ2AeH0DI;
|
||||
path=/; expires=Tue, 01-Apr-25 20:35:31 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=0tT0dhP6be3yJlOYI.zGaiYhO_s63uZ7L9h2mjFuTUI-1743537931401-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:
|
||||
- '1966'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-ratelimit-limit-requests:
|
||||
- '50000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '49999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999788'
|
||||
x-ratelimit-reset-requests:
|
||||
- 1ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_868c5ea7787c0215cc80eb9106f87605
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["Thought: I now can give a great answer Final Answer: I am unable
|
||||
to access external websites directly to extract URLs or search the internet;
|
||||
however, I can guide you on how to search for the required topics using search
|
||||
engines like Google. You would typically input your specific query into the
|
||||
search engine to receive a list of URLs and content related to your topic. Here\u2019s
|
||||
a step-by-step approach: 1. Go to a search engine like Google. 2. Enter your
|
||||
specific search query in the search bar. 3. Review the search results and identify
|
||||
URLs that are relevant to your topic. 4. Click on the links to access the actual
|
||||
content from those URLs. Remember to use specific keywords and phrases that
|
||||
are closely related to your research topic to narrow down your search results
|
||||
for more relevant URLs."], "model": "text-embedding-3-small", "encoding_format":
|
||||
"base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '883'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=kDn7w.xxhfUOdeywOX91X.QPh7jJ.MWIdK59RMswo4I-1743537928-1.0.1.1-fsXh4ayfrGxPX9d7yv7wOTJao.R7zWidYJkbOjSnLbNrs5DIziftd8U4EkvHFafefe4dS33kmwVZZvBBsSA0iTNy8kTCh4ouZCTCBGdqiJM;
|
||||
_cfuvid=jlKaHr6Qf4Cpn7uR7FBiNw0lhnPCPxgSGLHX33FTNZY-1743537928631-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"lWqtvNYF5Ly4m608YQPpPJrbD73/bkK9Re4lvKXYMz1blAo8hcJgPWQgGj2rSFS7Ysrku2XmU70WMci6lL9SvbvS+zuQ3Oc8q0jUPCAvLj2tgSY9tvGUvNuvSr3ZWtc8Yq7DOtSVETzC0VU8EYdhPaK8RDwfhFO8EWwCPFfNwLvQzwm9jME6PFMGdzxqj3g8M9aGvAH9ubx7xbw7tilXPNx2RjxbzEy8FKQSujIPi7xgPS+9J0lnvaXX8bzW6oS9+4wZPTSdArxfrnU7Bd/ivAXEgzzVd+w8r/K6vL98YryF++Q7F759vE2W1rxxcjG8oGfRvMEKWrzYd7o8SyYEvBuiKjwDb5C7D94KO90hobuJpo28ofXIPIjfEb31jP08QrYVPc5BErz64b687lYjvGNYXD19/o457jqCvKNKvLwANwA9oC5NvFCWJL15OAe8NIAfvdiT2zwwnTS8SyVCvAgYNb3tcwa87MgrvcBD3rrKXqe83sr3PFF4/zsZTTc97x0fvd+SNT3EJ4s8F759PW/kuTxcWkS9anSZuqcRhrxSQD09HfedvI4zETzcPUK85DtaPBFrQL0/foW9v7XmvAZuHLxEJ6o74q6kPNt3iLyYabm8W5NIveaQzTt7jDg9zbJYvepy9jxqj3i79I6BPIXCYD3M61w7uvAgPQOK77x6GuI8Q0QNvYXDIj1XzoK8bleEvC5IwbwrEDG92sytOz+aprtOXVI8W5QKveaRjzxa6S881HguvYLfdTzQlgU9yl1lvPSqojs+0yq8dKrBOyNLHbtrO5U8vGG1vOEEjLu/fOK8cMiYPN4D/LsSTt08s9TjO4ptiTxP60m9kWpfvO46ArpUlG47or0GvQ2kdjwoESU6chxKPUXSBDxh6Am9qoIavQLEtbtwqzW9kWshvWXnFbiYaTm77x0fPdSVkby0m1+8ofXIPHGOUjyP3Sk9KmVWvVx3pzzfdpS83FqlPIpsRzy3t866g21tPD1E8TvKe4q92swtvNfpwrqJwq481T8qPThiyLh64d28X3azPCNoADxuVwS9/6dGPfFykrzey7k8Rpf8PM2yWLqsuqo8TwitvMBgwTrw41g933aUPAnDj7zikUG87xzdPGc8Cb0rLNI87KwKPTSdAr2HURo67jnAvM8HTDyRT4A8QES/vKH2CrsP+Wm7/6dGPCW8MT1/byM80LImPSZnDD0LF8G8ykKGvPWM/Tx9/o49RnwdPeatsLta6S+635Hzu1R5D7yw1hk8IRJLvZuFKDwav429dKrBvBoT8bz1VLu80ZVDPGHoCbwKUQe9EMBlvCNLnb3wq5Y8tLhCPTubGrwyKmo7mKF7PS5Jg72o9CI9oRIsvYWnAb20m9883q+Yu3DHVr25RcY72SIVPO8c3TzUsPC8/qiIO2tWdLwCizG9dI6gPH02Ub3cPgS9NX9dvBoTcTya97A9dKuDvWqPeL1ECse8Uwb3vH3+Dr1/i8Q88KpUvIKns7x3xe45QCgevG4egLzPB0w8FTIKPAKLsTuLNIU7QCgeO+dXybtyOS09nEvivAKLMTzl5jS8ZecVvFuUCj2GiVy8DN48PcAnPT3CtbQ8xbUCOxIVWbyAUkA9H4RTPa/yOjybveo7bavnPFYi5juT+Rg9ev8CPDCdND2rSNQ86ZCbPcslozxmdEu79+HwOlMHOTyDbe28TkExvAv7n7wvD708VVvqPK5kQz1vANs8fsUKPU8kTr29KLE81gVkPCstlLvkH7m8batnufk25Dr6/V88ABqdvPk2ZL21Y5282SHTu5fa/7xvANs8dXB7ujFID71z48W7e4y4PO5yxDrfkfO85pBNPDIq6rzuOgI75x+HPOaRjzxfrvW7EKUGPBiF+bsz8WU7J0lnPGKuQ7sbhgk8lIbOvDC6F7xCtdO8UXqDu3k4hzxjdgE9DYkXPb7u6rzZIVM9+uIAvRIWm7zqV5c8A4pvPFxbBruk9ZY4zkESPH7ESD1TBne9Xq83Pe/kmrwEGGc8w2CPvHMAqT2+7mo9jxauvApQRb1GmD692FsZPR7aujvCmFE8f2+ju8pCBr3nWIu8+I2Nu/SOATyWFQg8Afz3vPRxnjxaBVG8ykIGuxFPnz3LJOE8FMCzvT0L7Tvzx4U54pIDOyNLnbtTzjQ9ehpivCpl1rxuOV+8ltyDPEmYjL1trCk8ViMovAv7Hz1Yd9k8RbUhvVew3btSP3s93FolPQsYgz2QwYi9uvCgvN92FLztjmU7O7c7PRrbrrtoAkM9YCEOPYXghbvOXTM8d8YwvV+TFr1wjxQ7Lw89vVkitDtrVnS9lU3KvGKSojxECsc8Zx8mPLSb37yX2n+9Kbu9vEsJITxF0cK8xe1EvWXnlTtfkxa96ckfPBSkkjvHXxu8c8ekvAc0Vr3ZIVM8L/MbPZVNSrxblIq7J0nnPEW1Ib1yHQw85clRvHDImDuw8fg7fRqwPL+15jp+qKe7v7VmPFexH72QiIS8IBMNPTPWBr3LCYI7YpKiO5xLYjpVQAu9uH8MvaH2CroYhru8xrN+PF7MGr0bhom8pC4bPHJVTjxAJ1y8batnvGWuETwv8xs9zbJYPIpsxzzWPug8djf3PJSHkL1UlbC8KmXWPD+aJrzrHpM717C+vLSb37zGs369u5l3O6ae7TwIGDU8PSmSPJP5mL0P+ek7dv7yO4/6jLwDim89SbStPPio7LyNh/Q8Ek5dvags5bxT65e7gqbxPDbxMzzHXxu8KZ7aOrO5BL14VKi7rNbLvCHaiLxB7tc62JSdPBVqzDttq2e9PfANvIpQprx1cHu9CPtRu10iAr2QpKW8TXq1PPkbBbuL+4C84FhvuEBg4Loz8qe8qbuevAAanbzw41i96nM4uw/6KzrvHN27WT+XPDIqarx9/Uy8hcMivY5O8DpCtVM7UXj/vBb4Qz34jQ29FWrMuzC6Fz2foFU7nROgPFCyRTxlrpG95DtavP9vBDzuVeE7azuVvA/eCj334fA5DxePPGnIfDyHGJY8269KPDSAn7xmrc+8xe3EuzV/3bxAJ1y86AKkPH020TwgS888+RuFvPvEWzyuLAE89v8VPaESrLxkA7c6OSlEPAT9B7xxVhA9LPQPvepy9jxtq2c7jYd0OopQJrzqV5e8Hr3XPDC6l7zz/0c7m76svOcfB72Uhk68jN6dPBFsgrtReH88g1IOPfriALz1OJq6QdK2PHIdDLwVasy8bZCIPCHZxrqCpnE72sytu5lNmLyRh0K8B1G5vNuvSrzNehY9tIAAvIzenbxCtVM8OJvMu9kiFTxyOS09kMGIvOQ7Wjw4Ysg8BP2HPP7gyrx64V28geA3vUzQnLy0m1+6O5saPEK10zzaBTI9X671vF+udTyVTcq7o4J+PL7TC72Ro2O86OVAPNfM3ziQiAQ8bORrvNPOFTys1w08rZ4JPLt+GLtiyyY8Htq6PGzkazt64V28geC3PCzXLD3ikcG8+RsFPQpRBzwL+x+9gRh6vIQ06byXvyC8ULLFvFYiZjw4Ywq87jlAvYdRmr20uEK8bwDbPOEEDDzKXic8ehriPKsss71jkWC8Tl6UOcQnC7y+7mo8LPPNO+dYCz2Gih69GGoaPTFkMDxmdMu87Y+nvFvMzLzAQ948BBjnPOjmgjs98I07W5SKu/rFnbzkH7k8PGIWPMazfjqJpg09GIY7vKXYMzoHNRi84FmxuzhiSDx6GuK8rWWFvWatzzvtcwa9NLmjvJlNGLwRT588XFsGvfFVLzvgWO+7xe1EPeN03rwoEGO8uUaIvMN8MLxfWhI66eT+vO8dHz0SFVk9vtOLOxSjUDy2KVe996muOw2luLtdIcC8l9vBvKW8Ejyl2LO8FKSSvI8V7Lx5OAc9H4RTPM55VDz34fA7HGhkPFk+1byqSZY78ONYPPPjJr2w1hk8cVYQPNPOFb2AUkA5FKQSu5SGTjskLjo98XFQPXVwe7xfdfE8qZ47vIEY+rvMsxq9hcLgO94D/DsI+9E7Bd/ivLrwID1I0RC98+MmPZVqrbwuSEE86OVAPOs5crwSFVk8ZzvHu4XDIjw2Dpc8k/hWPPI4TDzh56g7hooeu/FVrzwlvLE8+RuFu7xgczy38NI7qxCSvLJG7DuivYa8bx0+PagsZbpOXdK633YUPANvkLx7qRs8TyROvIptiTxJ7G88HS/gOymfHLw2DdW7id7Pu/rFnTwtgoe9BeCkvJ6hl7xVQAu9ooQCPW5y47vvHF294eeoOzDWuLu7mfe8fsTIPE4lEL2cMIM8GUz1PKmeOz2FwmC88jkOu1kiNDy4fkq8im2JPCm7vbuYhpw80ZVDPAam3ry7t5y8ax3wu7JGbDxLQeM6ZAO3PGzlLb3xcdA7skZsvJr27rwevdc8qxCSvBfAAbwoEGO8EWvAO3rh3bkJpiw8imxHO2A8bb28YTW8NUbZOdCWhTwjZ746ywmCPCQteDxjdT89pBD2PIQ06bss8808sw3oPAv7H7od9x09d6oPvOmQG7oqSTW9DMIbPH+LRDus8648P31DPMNfTTytgaa8xbUCu9F5oryGpr+8BqcgvcTuhrsJpiy8ofVIPJyEZjzLCYK8VJTuuiATjbwXvn09f4vEu6zXDbw2Dhe8BBkpPfPHhT3tjuW6dv5yOqtI1DvyAIq8sX/wvEW1Ib2yRuy8gt/1vFhbuDx8U7S8WT5VvGzk6zxo5qG6Uj/7vLFkET3Nljc9DaW4u0aX/Ds67307w2CPvE8kzrzw41i7mtuPu9la1zzJtI68lKOxOn9vIzyF++Q7mTA1vQnDDzwmu288gosSOwNvEDzKluk8TM9avInCLjuVTgw9poOOO1SyE7xSJBw84csHPZPAlDx6GmI8lhRGOt0FAL0GpyC8/TYyPQsXwbv4cCo8Tl6UOqXX8bztjmU7qoIaPLine truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
165,\n \"total_tokens\": 165\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929ab3a78f7f7e01-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:05:31 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:
|
||||
- '304'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-7c6fb6444f-lqx4h
|
||||
x-envoy-upstream-service-time:
|
||||
- '224'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999800'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 1ms
|
||||
x-request-id:
|
||||
- req_19ca925c719a9aa87da5ac6e9daf0f40
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"messages": [{"role": "user", "content": "Assess the quality of the task
|
||||
completed based on the description, expected output, and actual results.\n\nTask
|
||||
Description:\nPerform a search on specific topics.\n\nExpected Output:\nA list
|
||||
of relevant URLs based on the search query.\n\nActual Output:\nThought: I now
|
||||
can give a great answer\nFinal Answer: I am unable to access external websites
|
||||
directly to extract URLs or search the internet; however, I can guide you on
|
||||
how to search for the required topics using search engines like Google. You
|
||||
would typically input your specific query into the search engine to receive
|
||||
a list of URLs and content related to your topic. Here\u2019s a step-by-step
|
||||
approach:\n\n1. Go to a search engine like Google.\n2. Enter your specific search
|
||||
query in the search bar.\n3. Review the search results and identify URLs that
|
||||
are relevant to your topic.\n4. Click on the links to access the actual content
|
||||
from those URLs.\n\nRemember to use specific keywords and phrases that are closely
|
||||
related to your research topic to narrow down your search results for more relevant
|
||||
URLs.\n\nPlease provide:\n- Bullet points suggestions to improve future similar
|
||||
tasks\n- A score from 0 to 10 evaluating on completion, quality, and overall
|
||||
performance- Entities extracted from the task output, if any, their type, description,
|
||||
and relationships"}], "model": "gpt-4o", "tool_choice": {"type": "function",
|
||||
"function": {"name": "TaskEvaluation"}}, "tools": [{"type": "function", "function":
|
||||
{"name": "TaskEvaluation", "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:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '2840'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=Hxm6ignpjzUPY4_F0hNOxDI6blf0OOBnlpX09HJLkXw-1743537931-1.0.1.1-EnMojyC4HcsGaIfLZ3AM11JeKT5P2fCrPy4P_cEuqem7t6aJ66exdhSjbXn7cY_0WGDzFZMXOd2FiX1cdOOotV7bTaiKamm_kbxZ2AeH0DI;
|
||||
_cfuvid=0tT0dhP6be3yJlOYI.zGaiYhO_s63uZ7L9h2mjFuTUI-1743537931401-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"id\": \"chatcmpl-BHc9UaTUKHm9gIb6VtuzFmJ3Iyr5x\",\n \"object\":
|
||||
\"chat.completion\",\n \"created\": 1743537932,\n \"model\": \"gpt-4o-2024-08-06\",\n
|
||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
||||
\ \"id\": \"call_AB2zpwuaUHg5nDz8O27x9EGw\",\n \"type\":
|
||||
\"function\",\n \"function\": {\n \"name\": \"TaskEvaluation\",\n
|
||||
\ \"arguments\": \"{\\\"suggestions\\\":[\\\"Ensure that the system
|
||||
has the capability to access external websites or clarify such limitations in
|
||||
the task description.\\\",\\\"Consider using web scraping tools or APIs to fetch
|
||||
URLs directly if direct access is not possible.\\\",\\\"If the task only involves
|
||||
providing guidance, make sure to adjust the expectations to match the output
|
||||
type.\\\",\\\"Provide a clear and realistic expected output based on the known
|
||||
capabilities of the system.\\\"],\\\"quality\\\":3,\\\"entities\\\":[]}\"\n
|
||||
\ }\n }\n ],\n \"refusal\": null,\n \"annotations\":
|
||||
[]\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n
|
||||
\ }\n ],\n \"usage\": {\n \"prompt_tokens\": 443,\n \"completion_tokens\":
|
||||
87,\n \"total_tokens\": 530,\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_898ac29719\"\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929ab3ab8cf37dee-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:05: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:
|
||||
- '2114'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-ratelimit-limit-requests:
|
||||
- '50000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '49999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999672'
|
||||
x-ratelimit-reset-requests:
|
||||
- 1ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_0a3d97c857f26c689ef0840a21ad6dc3
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
version: 1
|
||||
@@ -0,0 +1,650 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '{"input": ["Perform a search on specific topics."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '115'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
7,\n \"total_tokens\": 7\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abaf15acd7df9-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:30 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=JcjzeNadYektCKxz.qAt_Iu9W82BXw8zXu9IzahTzL4-1743538230-1.0.1.1-zltiq2Kl.WZlrShHKUBPQrPv0dX2jM_mrIEDEv58Na6s2GSfEgAQbiffMTPHtElo6HoDyJX5g8sjIacSnLyZSswTCjtL4C75K1IK09Or9mo;
|
||||
path=/; expires=Tue, 01-Apr-25 20:40:30 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=cqy59cJ9.MxM3ogPzubxDJvueA5vj1ZPlpD5x5e3hdA-1743538230508-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:
|
||||
- '66'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-7c6fb6444f-cxmk8
|
||||
x-envoy-upstream-service-time:
|
||||
- '32'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999991'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_8ec9a4a21a4dda1d560d7002327e9bf5
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["Perform a search on specific topics."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '115'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
7,\n \"total_tokens\": 7\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abaf509b47deb-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:30 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=xm0wOFZcQAyJrMSiOz3MZOr_g5T3TyUhPvPR4mQpdeA-1743538230-1.0.1.1-kOKoGCRupMuPeKOGl9Uu0Gwt07QZKWJwMBg7JzariAfNaVs.AnqEQ__712GZsReNyqiOzUE0Qeykvt11gEEyFHX9VyyvNJcb6uHADLpyLLI;
|
||||
path=/; expires=Tue, 01-Apr-25 20:40:30 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=.x6X1bgu02i.2_qawj3TiVXv0.G8azhdA2QeTcj83tY-1743538230900-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:
|
||||
- '108'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-8486ff7cdd-dskkc
|
||||
x-envoy-upstream-service-time:
|
||||
- '93'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999991'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_7570e7930cbf7583a5c482bc9a9829cd
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: !!binary |
|
||||
CtoMCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSsQwKEgoQY3Jld2FpLnRl
|
||||
bGVtZXRyeRKXCAoQoIk4ztsSW1VcQBoGyvUEwRII42yueEHaLpkqDENyZXcgQ3JlYXRlZDABOaDB
|
||||
SlvCSjIYQai+bVvCSjIYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTA4LjBKGgoOcHl0aG9uX3Zl
|
||||
cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDA3YTcxNzY4Y2M0YzkzZWFiM2IzMWUzYzhk
|
||||
MjgzMmM2SjEKB2NyZXdfaWQSJgokMWI2YjUxZGEtMzgxMy00YjI1LTljN2EtOGM1ODkwM2NkMjk1
|
||||
ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAUoaChRjcmV3
|
||||
X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUo6ChBjcmV3
|
||||
X2ZpbmdlcnByaW50EiYKJDFjNGQ3MTZhLTA3YjktNDFjNi05NTk0LWI2ZDJmZmJiNDMxZEo7Chtj
|
||||
cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0wMVQxNzoxMDowMy45NTQwNjRK
|
||||
ywIKC2NyZXdfYWdlbnRzErsCCrgCW3sia2V5IjogIjAyZGYxM2UzNjcxMmFiZjUxZDIzOGZlZWJh
|
||||
YjFjYTI2IiwgImlkIjogIjFmNzNlM2ZiLThmMWEtNGVjYy05ZWY0LWMxZjgxMWU3ZGQ1MyIsICJy
|
||||
b2xlIjogIlJlc2VhcmNoZXIiLCAidmVyYm9zZT8iOiB0cnVlLCAibWF4X2l0ZXIiOiAyNSwgIm1h
|
||||
eF9ycG0iOiBudWxsLCAiZnVuY3Rpb25fY2FsbGluZ19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8i
|
||||
LCAiZGVsZWdhdGlvbl9lbmFibGVkPyI6IGZhbHNlLCAiYWxsb3dfY29kZV9leGVjdXRpb24/Ijog
|
||||
ZmFsc2UsICJtYXhfcmV0cnlfbGltaXQiOiAyLCAidG9vbHNfbmFtZXMiOiBbXX1dSv8BCgpjcmV3
|
||||
X3Rhc2tzEvABCu0BW3sia2V5IjogIjdiNDJkZjNjM2M3NGMyMWM4OTQ4MGUwYzA3MDUzODVmIiwg
|
||||
ImlkIjogImU0OGY1MDYwLWM5MjYtNGQ3ZC04M2NhLTk4MzQ0ZDU5OGJmMyIsICJhc3luY19leGVj
|
||||
dXRpb24/IjogZmFsc2UsICJodW1hbl9pbnB1dD8iOiBmYWxzZSwgImFnZW50X3JvbGUiOiAiUmVz
|
||||
ZWFyY2hlciIsICJhZ2VudF9rZXkiOiAiMDJkZjEzZTM2NzEyYWJmNTFkMjM4ZmVlYmFiMWNhMjYi
|
||||
LCAidG9vbHNfbmFtZXMiOiBbXX1degIYAYUBAAEAABKABAoQWFKbmOfdsTZ4sp84HAkrQRIIQ5oa
|
||||
A8zScp4qDFRhc2sgQ3JlYXRlZDABOaiGoFvCSjIYQbBPolvCSjIYSi4KCGNyZXdfa2V5EiIKIDA3
|
||||
YTcxNzY4Y2M0YzkzZWFiM2IzMWUzYzhkMjgzMmM2SjEKB2NyZXdfaWQSJgokMWI2YjUxZGEtMzgx
|
||||
My00YjI1LTljN2EtOGM1ODkwM2NkMjk1Si4KCHRhc2tfa2V5EiIKIDdiNDJkZjNjM2M3NGMyMWM4
|
||||
OTQ4MGUwYzA3MDUzODVmSjEKB3Rhc2tfaWQSJgokZTQ4ZjUwNjAtYzkyNi00ZDdkLTgzY2EtOTgz
|
||||
NDRkNTk4YmYzSjoKEGNyZXdfZmluZ2VycHJpbnQSJgokMWM0ZDcxNmEtMDdiOS00MWM2LTk1OTQt
|
||||
YjZkMmZmYmI0MzFkSjoKEHRhc2tfZmluZ2VycHJpbnQSJgokNDY1NmIwOTctMDdkMy00Zjg2LWE1
|
||||
OTgtYWQ1YmJiN2YwM2JlSjsKG3Rhc2tfZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0
|
||||
LTAxVDE3OjEwOjAzLjk1MjM3NUo7ChFhZ2VudF9maW5nZXJwcmludBImCiRkNGQyYzEzMy1hNmE4
|
||||
LTQ5YjktYTI0OS1iNzcwNDlkZjZlZWV6AhgBhQEAAQAA
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '1629'
|
||||
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:
|
||||
- Tue, 01 Apr 2025 20:10:32 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"messages": [{"role": "system", "content": "You are Researcher. You are
|
||||
a researcher at a leading tech think tank.\nYour personal goal is: Search relevant
|
||||
data and provide results\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: Perform a search
|
||||
on specific topics.\n\nThis is the expected criteria for your final answer:
|
||||
A list of relevant URLs based on the search query.\nyou MUST return the actual
|
||||
complete content as the final answer, not a summary.\n\n# Useful context: \nExternal
|
||||
memories:\n\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", "stop": ["\nObservation:"]}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '984'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=26AntG8LjHgDcgN0MYB7TgUTXmoUsQqg8yChWws9CAE-1743538222-1.0.1.1-jo5QRov4A_6L5CaGwhXx2I2aGHzSN6wvrS5Lt2yDpcV5vfTu3FlroYl2d4LBq.ySrtNMDxGQgpsA6fMg0z4iEOXpD5DT7CrJKWRNr4H7Y_k;
|
||||
_cfuvid=.HNP7WFC.O40eZMPSJZ4USQu9SYczq5v794aRx34sZg-1743538222787-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"id\": \"chatcmpl-BHcEJeQt9RxZ492mqpQIcZVupQH1c\",\n \"object\":
|
||||
\"chat.completion\",\n \"created\": 1743538231,\n \"model\": \"gpt-4o-2024-08-06\",\n
|
||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||
\"assistant\",\n \"content\": \"My current task is to perform a search
|
||||
on specific topics and return a list of relevant URLs. I don't have access to
|
||||
external internet tools to fetch live data, but I can guide on how to find information
|
||||
based on specific search queries.\\n\\n1. Identify the specific topics or keywords
|
||||
for the search.\\n2. Use a search engine like Google to input these keywords.\\n3.
|
||||
Look for credible sources, such as academic publications, news outlets, or specialized
|
||||
websites, that provide relevant and reliable information.\\n4. Compile the URLs
|
||||
from credible sources that directly relate to your search query.\\n\\nThought:
|
||||
I now can give a great answer\\nFinal Answer: To obtain a list of relevant URLs,
|
||||
you would need to perform a live search on a search engine using the specific
|
||||
keywords related to your topics of interest and collect URLs from credible sources
|
||||
such as academic journals, government websites, or reputable news outlets.\",\n
|
||||
\ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\":
|
||||
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
|
||||
185,\n \"completion_tokens\": 177,\n \"total_tokens\": 362,\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_898ac29719\"\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abaf84c1a7dfa-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10: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:
|
||||
- '2937'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-ratelimit-limit-requests:
|
||||
- '50000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '49999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999788'
|
||||
x-ratelimit-reset-requests:
|
||||
- 1ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_c8e37cceac4fcca65da1c883d29cd816
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["My current task is to perform a search on specific topics and
|
||||
return a list of relevant URLs. I don''t have access to external internet tools
|
||||
to fetch live data, but I can guide on how to find information based on specific
|
||||
search queries. 1. Identify the specific topics or keywords for the search.
|
||||
2. Use a search engine like Google to input these keywords. 3. Look for credible
|
||||
sources, such as academic publications, news outlets, or specialized websites,
|
||||
that provide relevant and reliable information. 4. Compile the URLs from credible
|
||||
sources that directly relate to your search query. Thought: I now can give
|
||||
a great answer Final Answer: To obtain a list of relevant URLs, you would need
|
||||
to perform a live search on a search engine using the specific keywords related
|
||||
to your topics of interest and collect URLs from credible sources such as academic
|
||||
journals, government websites, or reputable news outlets."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '995'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=JcjzeNadYektCKxz.qAt_Iu9W82BXw8zXu9IzahTzL4-1743538230-1.0.1.1-zltiq2Kl.WZlrShHKUBPQrPv0dX2jM_mrIEDEv58Na6s2GSfEgAQbiffMTPHtElo6HoDyJX5g8sjIacSnLyZSswTCjtL4C75K1IK09Or9mo;
|
||||
_cfuvid=cqy59cJ9.MxM3ogPzubxDJvueA5vj1ZPlpD5x5e3hdA-1743538230508-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
182,\n \"total_tokens\": 182\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abb0bee737df9-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10: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:
|
||||
- '86'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-bbb94bf85-txxsl
|
||||
x-envoy-upstream-service-time:
|
||||
- '78'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999770'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 1ms
|
||||
x-request-id:
|
||||
- req_7ea6db6200478758c413eeb853e93f15
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"messages": [{"role": "user", "content": "Assess the quality of the task
|
||||
completed based on the description, expected output, and actual results.\n\nTask
|
||||
Description:\nPerform a search on specific topics.\n\nExpected Output:\nA list
|
||||
of relevant URLs based on the search query.\n\nActual Output:\nMy current task
|
||||
is to perform a search on specific topics and return a list of relevant URLs.
|
||||
I don''t have access to external internet tools to fetch live data, but I can
|
||||
guide on how to find information based on specific search queries.\n\n1. Identify
|
||||
the specific topics or keywords for the search.\n2. Use a search engine like
|
||||
Google to input these keywords.\n3. Look for credible sources, such as academic
|
||||
publications, news outlets, or specialized websites, that provide relevant and
|
||||
reliable information.\n4. Compile the URLs from credible sources that directly
|
||||
relate to your search query.\n\nThought: I now can give a great answer\nFinal
|
||||
Answer: To obtain a list of relevant URLs, you would need to perform a live
|
||||
search on a search engine using the specific keywords related to your topics
|
||||
of interest and collect URLs from credible sources such as academic journals,
|
||||
government websites, or reputable news outlets.\n\nPlease provide:\n- Bullet
|
||||
points suggestions to improve future similar tasks\n- A score from 0 to 10 evaluating
|
||||
on completion, quality, and overall performance- Entities extracted from the
|
||||
task output, if any, their type, description, and relationships"}], "model":
|
||||
"gpt-4o", "tool_choice": {"type": "function", "function": {"name": "TaskEvaluation"}},
|
||||
"tools": [{"type": "function", "function": {"name": "TaskEvaluation", "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:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '2952'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=26AntG8LjHgDcgN0MYB7TgUTXmoUsQqg8yChWws9CAE-1743538222-1.0.1.1-jo5QRov4A_6L5CaGwhXx2I2aGHzSN6wvrS5Lt2yDpcV5vfTu3FlroYl2d4LBq.ySrtNMDxGQgpsA6fMg0z4iEOXpD5DT7CrJKWRNr4H7Y_k;
|
||||
_cfuvid=.HNP7WFC.O40eZMPSJZ4USQu9SYczq5v794aRx34sZg-1743538222787-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"id\": \"chatcmpl-BHcEMcdhPRL3gLo2olJ4aUutrNfLv\",\n \"object\":
|
||||
\"chat.completion\",\n \"created\": 1743538234,\n \"model\": \"gpt-4o-2024-08-06\",\n
|
||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
||||
\ \"id\": \"call_rzy02tsLLurMdGuEiul9lHF8\",\n \"type\":
|
||||
\"function\",\n \"function\": {\n \"name\": \"TaskEvaluation\",\n
|
||||
\ \"arguments\": \"{\\\"suggestions\\\":[\\\"Ensure access to the
|
||||
internet or appropriate APIs to perform live searches in future tasks.\\\",\\\"Consider
|
||||
simulating a response with example URLs if live search capability is unavailable.\\\",\\\"Provide
|
||||
a disclaimer regarding the unavailability of live data retrieval.\\\",\\\"Indicate
|
||||
clearly that the task cannot be completed as expected due to limitations.\\\"],\\\"quality\\\":3,\\\"entities\\\":[]}\"\n
|
||||
\ }\n }\n ],\n \"refusal\": null,\n \"annotations\":
|
||||
[]\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n
|
||||
\ }\n ],\n \"usage\": {\n \"prompt_tokens\": 459,\n \"completion_tokens\":
|
||||
71,\n \"total_tokens\": 530,\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_898ac29719\"\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abb0f2d587dfa-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:36 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:
|
||||
- '1657'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-ratelimit-limit-requests:
|
||||
- '50000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '49999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999644'
|
||||
x-ratelimit-reset-requests:
|
||||
- 1ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_ff90eb4514605cbdd86933a230691b6b
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
version: 1
|
||||
@@ -0,0 +1,836 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '{"input": ["Perform a search on specific topics."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '115'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"6lr3O9X5arxcDzA82U7nvC7Fcr0jUrE7JAA5vQBSTj3yNxg9fhYmPQf8xrtBBKu8zZDAvCGrvDyFNOs8JMb9OoEIgLzkNR89dGKWPXO0Dj2dh1E9DK1SvJMlOrymdZw8sXQRvd2LprwG6xw9g3U5PbAprDwf7Iq6gt/uPGV42rzZTme9leRrvKzUL7z+khy7OMTnuyz1FjxTvkK8MPgaOz2eBDusmvQ7/uSUPInDIjxqKWa9X7Ykvaw3Ur0f7Aq9axEpPajRqzw1RoQ9FkmlvAyt0rx+eci7SHRoPYFrojxuZqW9yZ7mu8U4QD0T9Cg9BuscvNcsk7xoBxI9WAysuoeQ+rz5Cni82pnMvFXIWTxMFEo8ZXhaPXIv7rsZUzy8vislPfT2ybxPzOg8q3igvD5dNj0vSpM7NUaEvWgwebwZ8Jk9lnq2PLl6mbxyBoc8hrkLvQDvqzzJjTy9SW1VPF5rP7w6vVS9pvB7vVYTv7uEhuM4iYlnvCgDPT2z4Uq8RPaEPD+omzuaMtW8YXXWPfRZ7Lsd8x28u3OGPKMgoLxztA49FqzHPF4IHbyV5Os87a/zvGjNVr1QenC9PZ4EvV9TgjwZU7w8JMZ9vKjRKzyvQem82U7nvPiWK7x/1dc8V/uBvb7x6TtMsae8dXPAu2yFdTynhka85alrO3KB5rzrQjq84+o5vdJ7Bz1BBKu6XggdPYZ/UL3a0we9v3aKvJEsTb1xDRq8SK4jvUT2BLzHzgo8QcpvPCmxxLvg4KI9cszLvPj5Tb3L+nW8YK8RvDLxBz3hQ0W8uPX4vNPvU73P7E+9PBnkPDT7njsXlIo7/90BuncJC7zsnkm9MvEHvLwhDrxb/oU8GVO8OwVm/DkV7ZU8bbgdumyF9buazzI7w5FLvQjkCbwyVCq7b9pxvEwUSj0cqDi7fS5jPLqLQzw9ngS8vzzPPCYKUL3Ah7Q7wkbmvM3z4jx+ivK8dr6lvHSLfbx4GjW9VKaFPPiFgbzGIAO9qz7lu4Lf7rgrRw89K3B2PSwGQT3fStg8TV+vvFmAeLxHAJy8xIq4O9WWyDzPJos8Qk+QPDD4GjzeOS49zniDu2fU6TwmXEg80t4pPUob3bwuYlC9otU6PT4SUTwb+rA8DBD1PLDvcL06vVS8JAA5vYN1OTtYDCw7G13TuwZOP7y3Nse86YMIPQruID0UPw49iYlnPXN60zwRXt68v59xPIU0azwPjoI9T6MBPTlJCD1RYjM8tzZHPeyeybzuNBS9D7dpvQZOvzsA7yu9RhhZvVv+hb3VM6Y70OW8u9klAD1LAyC8ClFDORuXDr12viU9qi27O6/eRjy7c4Y7HbliPH/V17yJJkU9RB9svZhzI71s0Nq86eaqvNCCmrzd7kg7IQ7fPJYXFDw0wWO960K6vdWWyLxgr5G8i805PPKaurze1os7VQKVvGCvkTzIfJI9ch5EvTgW4Lyi1bq78omQu8Dq1jy306Q8zyYLvQiqzrwWD2q7JMZ9vHwdOTsrRw89tzbHPKHczTvEUP28aRi8PEq4OjtISwE7DZWVvE5wWTyqLbu8GAhXOwOWIDxrrgY9Z9Tpu1KtGDve//I8BaA3PPs9oLyn6Wg9q3ggvL88zzyklGw8bCJTvBZJJb3QSN88NakmvKYqtzyb4Fy6A5agPPugwrx5dsS85twTvSBIGj3o/mc9r95Gu3MXMb1R/xA9Aq7dvKxxDT0nG3o7eLeSPLzn0jq9Mji8VbevusojhzzHzoq8JUseO4VuJrvlqWu9L621vJEsTb3i2Q+9IgfMO8+aVz3xoc28VWU3vOPquTy306S8nYfRu0+7Pr2kzic8SfmIPI+/E7wrcHa7LVEmvRUWfTxRYrM72tMHvPHbiLyreCC8Qw7COlkdVr212rc8WxbDOyTGfTokxv07M3Z+PPEE8LwanqE8KpkHvPKJED0oZt+7iWAAO/8G6bz0MAU9sdezu0fG4DwfFfK7zzc1PPBW6DwknRa9y5dTPQNEqLy2JZ08eOB5PMfOij1yL+47+DOJvcme5rzyNxi9JMZ9PHi3Ej28SvW7+o8YvMXVnbxKVZg8xoOlvPryury+K6U8MQnFu1Ua0rsmCtC7iQ4IPfSTpzwC6Bg8ezX2OyBImrzR9uY8b3dPvQDvKzzS3im860K6PMnYobyicpg8nepzPDRewbtmYB28ch5EvCBImjx6Xgc9yoYpvarKmLzGgyU9TqqUPZfFGz01qaa7k+t+PAlY1jsZtl47mmyQPKqQXbxAViM9/IiFPUQf7LzPiS09BT2VvO40lLxBZ0089JMnvF986bwiQQe9PFOfvaV8r7sUPw49PZ4EPR1WQD3yYP+85alrPBpkZjwt7gM8n4A+vNPvU7xIEUY8WYD4N+ftvTzRMKK89FlsO55vlL3PJgs8BaC3vHvS0zuFNGu8+z0gu4J8TDw1b+s8MgIyPAxKMD1aaDs9aM1WPKXfUTx7bzE9zqHqvPgziTykzic8nSQvPCpfTLyvQek8sjNDPAmjOzzJnmY8WYB4PC9KEz0j7w48Aks7vIHORL2qkF299lJZPD6vrrz4lis9U77CPPZSWTwwW709k8IXvSPvDj20j9I8pM4nPHpeh72qkN08xFB9PNJ7h7yr20K8uXoZvR4ESL3wkKO8PZ4EPQdf6bzLNDG9jSlJuygDvbzoOCM9T7s+PIXRyDv5Cvg8tXcVu5eLYDrx2wg9Ff6/vKyJyrw1b+u8PZ6EvB254jwWD+q7D1RHvfL93DuPIja8Z7ysuvgziTwj7w67VAkovHDCtLxVZTc85eOmvIVuJjweBEi9WgWZvCYK0Lz+9T680TCiuucFezwWD+q7fbMDvfiWK71ozVa9VcjZPCFZxLyUcJ+8b9pxvFck6Txl23w89oyUOyIHzDzP1JK8lbuEOzBbvTvVhZ48+Ogjvat4ID3O2yW9HVZAPDOwOTwxQ4A8ezV2uyxp47yfHZy9BT2VPFMhZTww+Jo8E7rtu5W7hDwyVKq7CfUzO7PhSrpb/gU7nHanO38PE7zO26W8EZgZOoofMr3y7LK8GGv5PFthqLz/o0Y8zS2euw/xpLwlrsC6yHwSvXgaNby+jse7rJr0PAGdM7uw7/C8b3dPvTRewTn+R7c87NgEPdtHVL0u/608wOpWPFVlNzzyiRC88omQuSpfzLro1YA7nBMFvfEE8Dv8iIW8siIZPeNN3LpygeY7ezV2ufzrJzwTum08j7+TO+2GjLzj6jk9ZsO/OtjaGr1RxVU7HxVyvdsvF7zqMZA8KpmHvJXk67wECu28sO/wPDT7nry8IQ49RwCcvGUVuLx+FiY9m+DcPINkj7wfFfI7FVA4vUnQdzzsOyc82+Sxu+ftPT2RLE091YWevMWbYrxWE7889rX7PHaE6rx0xbi7qG6JO9Sd2zwso548Or1UPIa5i7xODbc7W8RKPPQwhTsvShO70qRuvLtzBjtgZCy7MgKyOidVNTxlshU78T4rut45rjsSRiG7AZ2zvODgIr3+R7c81ywTu1awHD1uyUe7AFJOvSH2IbzF1R09LbTIO/RZ7DyYEAG8pM4nPb59nb309sk8JUueO4ULBDy7cwY9hTRrPPAtAT3bgY+8/6PGPNdVejxi0WW8HmdqPCb5pbydwYy8yiMHPf8G6Ty6KKG7stCgPDhQmzxlspW7B/xGOzN2frxYqQk8YtHlu/lEMzx8upa8G6/LvN0oBLwyt8y7vIQwvcx/ljyylmW70EhfPA88iryQuAC8kSxNvIa5Cz2DEhc9P27gPNrTh7yo0au8hW6mvNzdHr1Ge/s8BuucvBZJpTyiON08ZAQOveWABD23Nse8pti+Op41WTwrcHa8iHi9vBJGIby/dgq9BFXSvFck6TprdMu7X3zpuzdoWDzXVXo8CUCZPGF1Vrut5dm8uXqZPLXaN70W5gK8pDFKPFB68Lyb4Nw8bNDaPKcjJLz0MAW9/qrZutklAL1J0Pc8leRrvM/UEjne1os8dMW4vDa6UDz+qtk6myvCu2m1GT0xQwC9LsVyvMU4wLu26+E8dluDO5TTQTvYoN88fcvAvGAqcTyTwpc8MxNcO3VzQLzxBPC8vsgCvKY74bwxpqI7reXZvEnQdzznUOA8LVGmPKyJyjzk++M8TfwMPbfTJLydwQw9+EtGvC7F8jz1pNE8bgODvCb5Jbwhqzw9Pq+uPJB+Rb0SqUO8grYHvOjVALzyT9W8tI9SPBQ/DrwqX8y8mNbFO/XejLzRk0S911X6vNLeKT3qMZC847B+u4zeYzu1Pdo7GEISPaRrhbyRLE26mHMjPYZ/0LwfTy28vuA/PK7NnDyTwpc8/6NGPCigGr1NXy+92+QxvN0oBDw2ulC8YxxLvDj+Ij3gfQC970W+vHFwvLxJv008dMW4PGAqcbweoaW6BrHhvH2zAzt4ZZo8edlmO5rPMjw8GeS7JJ0WPL+fcby2iD+8k+t+PEfG4DwD4QU8aDB5PERZpzszsLk7FKKwPET2BL2h3M084abnPJm+CD29zxW9IVnEPA5DHTx6wSk9VbcvPEWkDLwknZa7woAhvTKfD72VL1G8xuZHu8nYITw3aNg8zze1vOcF+7z9X/S8OiD3OuaiWDwYQhI89FlsvNZEULoR+zu5/ZkvPWXb/DzJjby83v9yu9/ntbx+YYs8Pws+vKzDBT1tuJ0886tkvNDlPDycE4W8NleuvB4+AzwFPRW7qDROvIYcLr0E8i89QhVVvbndOz0knZY8IP00vGCvkTxVVA08sjPDu8SKuDsZtl479FlsvEIV1bvuNJS8uMwRvVzV9Lz+WGG8LVEmPbtzBjwu/y09B1/pOoK2Bz1NJXQ80IIavX/V17wPjgI8XHLSPNH25ju+8Wk82y8XvPiWK7wZ8Bk8BPKvvE+jAbyVL9E8HEWWvA8CT7xwwrS8lYFJPLine truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
7,\n \"total_tokens\": 7\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abab459817e07-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:20 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=wQNqc3BNcaCzhFR4owoCJRMIvs7PWqvy7xmWaIr4k.A-1743538220-1.0.1.1-AIxSGyU_kRiSsc4DYqsunqMwAlAn0fhT.P.7_bBBWTyHeVrexxOSRpm5yj6QmiIVcYwEgdJqk9EsHBy9LfadhgMJ5w8LIrHF_sxBFAXOOxc;
|
||||
path=/; expires=Tue, 01-Apr-25 20:40:20 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=g5w7.LJsKZSYhPzW6M1n.OyrMWQSUF5zX.cFK1vZrQI-1743538220809-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:
|
||||
- '308'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-68459c4c98-bfmcm
|
||||
x-envoy-upstream-service-time:
|
||||
- '243'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999991'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_51cfe3e45d22af953af55f6708e77623
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["Perform a search on specific topics."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '115'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"6lr3O9X5arxcDzA82U7nvC7Fcr0jUrE7JAA5vQBSTj3yNxg9fhYmPQf8xrtBBKu8zZDAvCGrvDyFNOs8JMb9OoEIgLzkNR89dGKWPXO0Dj2dh1E9DK1SvJMlOrymdZw8sXQRvd2LprwG6xw9g3U5PbAprDwf7Iq6gt/uPGV42rzZTme9leRrvKzUL7z+khy7OMTnuyz1FjxTvkK8MPgaOz2eBDusmvQ7/uSUPInDIjxqKWa9X7Ykvaw3Ur0f7Aq9axEpPajRqzw1RoQ9FkmlvAyt0rx+eci7SHRoPYFrojxuZqW9yZ7mu8U4QD0T9Cg9BuscvNcsk7xoBxI9WAysuoeQ+rz5Cni82pnMvFXIWTxMFEo8ZXhaPXIv7rsZUzy8vislPfT2ybxPzOg8q3igvD5dNj0vSpM7NUaEvWgwebwZ8Jk9lnq2PLl6mbxyBoc8hrkLvQDvqzzJjTy9SW1VPF5rP7w6vVS9pvB7vVYTv7uEhuM4iYlnvCgDPT2z4Uq8RPaEPD+omzuaMtW8YXXWPfRZ7Lsd8x28u3OGPKMgoLxztA49FqzHPF4IHbyV5Os87a/zvGjNVr1QenC9PZ4EvV9TgjwZU7w8JMZ9vKjRKzyvQem82U7nvPiWK7x/1dc8V/uBvb7x6TtMsae8dXPAu2yFdTynhka85alrO3KB5rzrQjq84+o5vdJ7Bz1BBKu6XggdPYZ/UL3a0we9v3aKvJEsTb1xDRq8SK4jvUT2BLzHzgo8QcpvPCmxxLvg4KI9cszLvPj5Tb3L+nW8YK8RvDLxBz3hQ0W8uPX4vNPvU73P7E+9PBnkPDT7njsXlIo7/90BuncJC7zsnkm9MvEHvLwhDrxb/oU8GVO8OwVm/DkV7ZU8bbgdumyF9buazzI7w5FLvQjkCbwyVCq7b9pxvEwUSj0cqDi7fS5jPLqLQzw9ngS8vzzPPCYKUL3Ah7Q7wkbmvM3z4jx+ivK8dr6lvHSLfbx4GjW9VKaFPPiFgbzGIAO9qz7lu4Lf7rgrRw89K3B2PSwGQT3fStg8TV+vvFmAeLxHAJy8xIq4O9WWyDzPJos8Qk+QPDD4GjzeOS49zniDu2fU6TwmXEg80t4pPUob3bwuYlC9otU6PT4SUTwb+rA8DBD1PLDvcL06vVS8JAA5vYN1OTtYDCw7G13TuwZOP7y3Nse86YMIPQruID0UPw49iYlnPXN60zwRXt68v59xPIU0azwPjoI9T6MBPTlJCD1RYjM8tzZHPeyeybzuNBS9D7dpvQZOvzsA7yu9RhhZvVv+hb3VM6Y70OW8u9klAD1LAyC8ClFDORuXDr12viU9qi27O6/eRjy7c4Y7HbliPH/V17yJJkU9RB9svZhzI71s0Nq86eaqvNCCmrzd7kg7IQ7fPJYXFDw0wWO960K6vdWWyLxgr5G8i805PPKaurze1os7VQKVvGCvkTzIfJI9ch5EvTgW4Lyi1bq78omQu8Dq1jy306Q8zyYLvQiqzrwWD2q7JMZ9vHwdOTsrRw89tzbHPKHczTvEUP28aRi8PEq4OjtISwE7DZWVvE5wWTyqLbu8GAhXOwOWIDxrrgY9Z9Tpu1KtGDve//I8BaA3PPs9oLyn6Wg9q3ggvL88zzyklGw8bCJTvBZJJb3QSN88NakmvKYqtzyb4Fy6A5agPPugwrx5dsS85twTvSBIGj3o/mc9r95Gu3MXMb1R/xA9Aq7dvKxxDT0nG3o7eLeSPLzn0jq9Mji8VbevusojhzzHzoq8JUseO4VuJrvlqWu9L621vJEsTb3i2Q+9IgfMO8+aVz3xoc28VWU3vOPquTy306S8nYfRu0+7Pr2kzic8SfmIPI+/E7wrcHa7LVEmvRUWfTxRYrM72tMHvPHbiLyreCC8Qw7COlkdVr212rc8WxbDOyTGfTokxv07M3Z+PPEE8LwanqE8KpkHvPKJED0oZt+7iWAAO/8G6bz0MAU9sdezu0fG4DwfFfK7zzc1PPBW6DwknRa9y5dTPQNEqLy2JZ08eOB5PMfOij1yL+47+DOJvcme5rzyNxi9JMZ9PHi3Ej28SvW7+o8YvMXVnbxKVZg8xoOlvPryury+K6U8MQnFu1Ua0rsmCtC7iQ4IPfSTpzwC6Bg8ezX2OyBImrzR9uY8b3dPvQDvKzzS3im860K6PMnYobyicpg8nepzPDRewbtmYB28ch5EvCBImjx6Xgc9yoYpvarKmLzGgyU9TqqUPZfFGz01qaa7k+t+PAlY1jsZtl47mmyQPKqQXbxAViM9/IiFPUQf7LzPiS09BT2VvO40lLxBZ0089JMnvF986bwiQQe9PFOfvaV8r7sUPw49PZ4EPR1WQD3yYP+85alrPBpkZjwt7gM8n4A+vNPvU7xIEUY8WYD4N+ftvTzRMKK89FlsO55vlL3PJgs8BaC3vHvS0zuFNGu8+z0gu4J8TDw1b+s8MgIyPAxKMD1aaDs9aM1WPKXfUTx7bzE9zqHqvPgziTykzic8nSQvPCpfTLyvQek8sjNDPAmjOzzJnmY8WYB4PC9KEz0j7w48Aks7vIHORL2qkF299lJZPD6vrrz4lis9U77CPPZSWTwwW709k8IXvSPvDj20j9I8pM4nPHpeh72qkN08xFB9PNJ7h7yr20K8uXoZvR4ESL3wkKO8PZ4EPQdf6bzLNDG9jSlJuygDvbzoOCM9T7s+PIXRyDv5Cvg8tXcVu5eLYDrx2wg9Ff6/vKyJyrw1b+u8PZ6EvB254jwWD+q7D1RHvfL93DuPIja8Z7ysuvgziTwj7w67VAkovHDCtLxVZTc85eOmvIVuJjweBEi9WgWZvCYK0Lz+9T680TCiuucFezwWD+q7fbMDvfiWK71ozVa9VcjZPCFZxLyUcJ+8b9pxvFck6Txl23w89oyUOyIHzDzP1JK8lbuEOzBbvTvVhZ48+Ogjvat4ID3O2yW9HVZAPDOwOTwxQ4A8ezV2uyxp47yfHZy9BT2VPFMhZTww+Jo8E7rtu5W7hDwyVKq7CfUzO7PhSrpb/gU7nHanO38PE7zO26W8EZgZOoofMr3y7LK8GGv5PFthqLz/o0Y8zS2euw/xpLwlrsC6yHwSvXgaNby+jse7rJr0PAGdM7uw7/C8b3dPvTRewTn+R7c87NgEPdtHVL0u/608wOpWPFVlNzzyiRC88omQuSpfzLro1YA7nBMFvfEE8Dv8iIW8siIZPeNN3LpygeY7ezV2ufzrJzwTum08j7+TO+2GjLzj6jk9ZsO/OtjaGr1RxVU7HxVyvdsvF7zqMZA8KpmHvJXk67wECu28sO/wPDT7nry8IQ49RwCcvGUVuLx+FiY9m+DcPINkj7wfFfI7FVA4vUnQdzzsOyc82+Sxu+ftPT2RLE091YWevMWbYrxWE7889rX7PHaE6rx0xbi7qG6JO9Sd2zwso548Or1UPIa5i7xODbc7W8RKPPQwhTsvShO70qRuvLtzBjtgZCy7MgKyOidVNTxlshU78T4rut45rjsSRiG7AZ2zvODgIr3+R7c81ywTu1awHD1uyUe7AFJOvSH2IbzF1R09LbTIO/RZ7DyYEAG8pM4nPb59nb309sk8JUueO4ULBDy7cwY9hTRrPPAtAT3bgY+8/6PGPNdVejxi0WW8HmdqPCb5pbydwYy8yiMHPf8G6Ty6KKG7stCgPDhQmzxlspW7B/xGOzN2frxYqQk8YtHlu/lEMzx8upa8G6/LvN0oBLwyt8y7vIQwvcx/ljyylmW70EhfPA88iryQuAC8kSxNvIa5Cz2DEhc9P27gPNrTh7yo0au8hW6mvNzdHr1Ge/s8BuucvBZJpTyiON08ZAQOveWABD23Nse8pti+Op41WTwrcHa8iHi9vBJGIby/dgq9BFXSvFck6TprdMu7X3zpuzdoWDzXVXo8CUCZPGF1Vrut5dm8uXqZPLXaN70W5gK8pDFKPFB68Lyb4Nw8bNDaPKcjJLz0MAW9/qrZutklAL1J0Pc8leRrvM/UEjne1os8dMW4vDa6UDz+qtk6myvCu2m1GT0xQwC9LsVyvMU4wLu26+E8dluDO5TTQTvYoN88fcvAvGAqcTyTwpc8MxNcO3VzQLzxBPC8vsgCvKY74bwxpqI7reXZvEnQdzznUOA8LVGmPKyJyjzk++M8TfwMPbfTJLydwQw9+EtGvC7F8jz1pNE8bgODvCb5Jbwhqzw9Pq+uPJB+Rb0SqUO8grYHvOjVALzyT9W8tI9SPBQ/DrwqX8y8mNbFO/XejLzRk0S911X6vNLeKT3qMZC847B+u4zeYzu1Pdo7GEISPaRrhbyRLE26mHMjPYZ/0LwfTy28vuA/PK7NnDyTwpc8/6NGPCigGr1NXy+92+QxvN0oBDw2ulC8YxxLvDj+Ij3gfQC970W+vHFwvLxJv008dMW4PGAqcbweoaW6BrHhvH2zAzt4ZZo8edlmO5rPMjw8GeS7JJ0WPL+fcby2iD+8k+t+PEfG4DwD4QU8aDB5PERZpzszsLk7FKKwPET2BL2h3M084abnPJm+CD29zxW9IVnEPA5DHTx6wSk9VbcvPEWkDLwknZa7woAhvTKfD72VL1G8xuZHu8nYITw3aNg8zze1vOcF+7z9X/S8OiD3OuaiWDwYQhI89FlsvNZEULoR+zu5/ZkvPWXb/DzJjby83v9yu9/ntbx+YYs8Pws+vKzDBT1tuJ0886tkvNDlPDycE4W8NleuvB4+AzwFPRW7qDROvIYcLr0E8i89QhVVvbndOz0knZY8IP00vGCvkTxVVA08sjPDu8SKuDsZtl479FlsvEIV1bvuNJS8uMwRvVzV9Lz+WGG8LVEmPbtzBjwu/y09B1/pOoK2Bz1NJXQ80IIavX/V17wPjgI8XHLSPNH25ju+8Wk82y8XvPiWK7wZ8Bk8BPKvvE+jAbyVL9E8HEWWvA8CT7xwwrS8lYFJPLine truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
7,\n \"total_tokens\": 7\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abab86d4a7e1b-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:21 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=MCDkRAmvHC26iz7BEoKzXwq4j5v_FEX5IQepnW5ARp4-1743538221-1.0.1.1-GXJkwk8HCFy9W0tA9R.s3NWzCNJ7wCiaUFu4YCbra4nQNVJa_mN3jdnmfREeET4QfWbYGCQXuM5GHffwtQZ_W1EV3mUC4JFa3w5CCDqO41Y;
|
||||
path=/; expires=Tue, 01-Apr-25 20:40:21 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=mRF3.ZghYObsvTKqmSfcqSbJFV0SBPVk2Psc.9DVGlE-1743538221434-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:
|
||||
- '156'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-7c6fb6444f-m8b65
|
||||
x-envoy-upstream-service-time:
|
||||
- '132'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999991'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_463b788a4cc327763e9544976b2fe7ce
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: !!binary |
|
||||
CtoMCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSsQwKEgoQY3Jld2FpLnRl
|
||||
bGVtZXRyeRKXCAoQllrSJs4siWPoysCAkdyzdhIIeP9LvWGg1D0qDENyZXcgQ3JlYXRlZDABOeAu
|
||||
xRLASjIYQUh77RLASjIYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTA4LjBKGgoOcHl0aG9uX3Zl
|
||||
cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDA3YTcxNzY4Y2M0YzkzZWFiM2IzMWUzYzhk
|
||||
MjgzMmM2SjEKB2NyZXdfaWQSJgokOWUwNDE3NDgtZTg2MS00M2YzLWE4ZTYtMTA4N2I3NjA1MTE1
|
||||
ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAUoaChRjcmV3
|
||||
X251bWJlcl9vZl90YXNrcxICGAFKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAUo6ChBjcmV3
|
||||
X2ZpbmdlcnByaW50EiYKJDlhODQwMjI3LTQwY2UtNDU4OC1iYTAzLTBlYzZlMjQzMDdjMUo7Chtj
|
||||
cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0wMVQxNzowOTo1NC4xMzIwMzlK
|
||||
ywIKC2NyZXdfYWdlbnRzErsCCrgCW3sia2V5IjogIjAyZGYxM2UzNjcxMmFiZjUxZDIzOGZlZWJh
|
||||
YjFjYTI2IiwgImlkIjogImNlMjE2ZTU4LTY1MDgtNDQ0My1iZTY0LWUwNzVhNTQ5YzMzZCIsICJy
|
||||
b2xlIjogIlJlc2VhcmNoZXIiLCAidmVyYm9zZT8iOiB0cnVlLCAibWF4X2l0ZXIiOiAyNSwgIm1h
|
||||
eF9ycG0iOiBudWxsLCAiZnVuY3Rpb25fY2FsbGluZ19sbG0iOiAiIiwgImxsbSI6ICJncHQtNG8i
|
||||
LCAiZGVsZWdhdGlvbl9lbmFibGVkPyI6IGZhbHNlLCAiYWxsb3dfY29kZV9leGVjdXRpb24/Ijog
|
||||
ZmFsc2UsICJtYXhfcmV0cnlfbGltaXQiOiAyLCAidG9vbHNfbmFtZXMiOiBbXX1dSv8BCgpjcmV3
|
||||
X3Rhc2tzEvABCu0BW3sia2V5IjogIjdiNDJkZjNjM2M3NGMyMWM4OTQ4MGUwYzA3MDUzODVmIiwg
|
||||
ImlkIjogImVmMDNjMDliLTIwNGQtNGU2Yy04NDIwLTQyNmNmOWM4OGFmYyIsICJhc3luY19leGVj
|
||||
dXRpb24/IjogZmFsc2UsICJodW1hbl9pbnB1dD8iOiBmYWxzZSwgImFnZW50X3JvbGUiOiAiUmVz
|
||||
ZWFyY2hlciIsICJhZ2VudF9rZXkiOiAiMDJkZjEzZTM2NzEyYWJmNTFkMjM4ZmVlYmFiMWNhMjYi
|
||||
LCAidG9vbHNfbmFtZXMiOiBbXX1degIYAYUBAAEAABKABAoQZo4JZzOQlEm7ZP/lMPxN9hIIymaC
|
||||
IpHXF4cqDFRhc2sgQ3JlYXRlZDABObhUIRPASjIYQQgSIxPASjIYSi4KCGNyZXdfa2V5EiIKIDA3
|
||||
YTcxNzY4Y2M0YzkzZWFiM2IzMWUzYzhkMjgzMmM2SjEKB2NyZXdfaWQSJgokOWUwNDE3NDgtZTg2
|
||||
MS00M2YzLWE4ZTYtMTA4N2I3NjA1MTE1Si4KCHRhc2tfa2V5EiIKIDdiNDJkZjNjM2M3NGMyMWM4
|
||||
OTQ4MGUwYzA3MDUzODVmSjEKB3Rhc2tfaWQSJgokZWYwM2MwOWItMjA0ZC00ZTZjLTg0MjAtNDI2
|
||||
Y2Y5Yzg4YWZjSjoKEGNyZXdfZmluZ2VycHJpbnQSJgokOWE4NDAyMjctNDBjZS00NTg4LWJhMDMt
|
||||
MGVjNmUyNDMwN2MxSjoKEHRhc2tfZmluZ2VycHJpbnQSJgokNzcwMDBjZjktZjVlNC00MDJhLTg1
|
||||
MTgtNzFhMzZhZTc2MmQwSjsKG3Rhc2tfZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0
|
||||
LTAxVDE3OjA5OjU0LjEzMTE4NUo7ChFhZ2VudF9maW5nZXJwcmludBImCiQ0Y2Y4OTc4Yy1iN2M4
|
||||
LTRiMjUtODYxMC1lNWE4NmMxOTYwNzB6AhgBhQEAAQAA
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '1629'
|
||||
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:
|
||||
- Tue, 01 Apr 2025 20:10:22 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: '{"messages": [{"role": "system", "content": "You are Researcher. You are
|
||||
a researcher at a leading tech think tank.\nYour personal goal is: Search relevant
|
||||
data and provide results\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: Perform a search
|
||||
on specific topics.\n\nThis is the expected criteria for your final answer:
|
||||
A list of relevant URLs based on the search query.\nyou MUST return the actual
|
||||
complete content as the final answer, not a summary.\n\n# Useful context: \nExternal
|
||||
memories:\n\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", "stop": ["\nObservation:"]}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '984'
|
||||
content-type:
|
||||
- application/json
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"id\": \"chatcmpl-BHcE9342OpU72PR82mknhgcVzhK5H\",\n \"object\":
|
||||
\"chat.completion\",\n \"created\": 1743538221,\n \"model\": \"gpt-4o-2024-08-06\",\n
|
||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||
\"assistant\",\n \"content\": \"Thought: I need to gather relevant URLs
|
||||
based on the search query provided in order to fulfill the task requirements.\\n\\nFinal
|
||||
Answer: The search query or topics were not specified. Please provide specific
|
||||
topics or search query to perform a search for relevant URLs.\",\n \"refusal\":
|
||||
null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\":
|
||||
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 185,\n \"completion_tokens\":
|
||||
50,\n \"total_tokens\": 235,\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_898ac29719\"\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929ababcdf9c7dfa-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:22 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=26AntG8LjHgDcgN0MYB7TgUTXmoUsQqg8yChWws9CAE-1743538222-1.0.1.1-jo5QRov4A_6L5CaGwhXx2I2aGHzSN6wvrS5Lt2yDpcV5vfTu3FlroYl2d4LBq.ySrtNMDxGQgpsA6fMg0z4iEOXpD5DT7CrJKWRNr4H7Y_k;
|
||||
path=/; expires=Tue, 01-Apr-25 20:40:22 GMT; domain=.api.openai.com; HttpOnly;
|
||||
Secure; SameSite=None
|
||||
- _cfuvid=.HNP7WFC.O40eZMPSJZ4USQu9SYczq5v794aRx34sZg-1743538222787-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:
|
||||
- '860'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-ratelimit-limit-requests:
|
||||
- '50000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '49999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999788'
|
||||
x-ratelimit-reset-requests:
|
||||
- 1ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_bf03af6c68765e4393cb60521c5d99ec
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["Thought: I need to gather relevant URLs based on the search
|
||||
query provided in order to fulfill the task requirements. Final Answer: The
|
||||
search query or topics were not specified. Please provide specific topics or
|
||||
search query to perform a search for relevant URLs."], "model": "text-embedding-3-small",
|
||||
"encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '344'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=wQNqc3BNcaCzhFR4owoCJRMIvs7PWqvy7xmWaIr4k.A-1743538220-1.0.1.1-AIxSGyU_kRiSsc4DYqsunqMwAlAn0fhT.P.7_bBBWTyHeVrexxOSRpm5yj6QmiIVcYwEgdJqk9EsHBy9LfadhgMJ5w8LIrHF_sxBFAXOOxc;
|
||||
_cfuvid=g5w7.LJsKZSYhPzW6M1n.OyrMWQSUF5zX.cFK1vZrQI-1743538220809-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
50,\n \"total_tokens\": 50\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abac4a8fc7e07-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:24 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:
|
||||
- '1403'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-69ff67f767-88tkx
|
||||
x-envoy-upstream-service-time:
|
||||
- '1369'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999934'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_5a1b9f49c2d200641e58e8cd95ef063a
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"messages": [{"role": "user", "content": "Assess the quality of the task
|
||||
completed based on the description, expected output, and actual results.\n\nTask
|
||||
Description:\nPerform a search on specific topics.\n\nExpected Output:\nA list
|
||||
of relevant URLs based on the search query.\n\nActual Output:\nThought: I need
|
||||
to gather relevant URLs based on the search query provided in order to fulfill
|
||||
the task requirements.\n\nFinal Answer: The search query or topics were not
|
||||
specified. Please provide specific topics or search query to perform a search
|
||||
for relevant URLs.\n\nPlease provide:\n- Bullet points suggestions to improve
|
||||
future similar tasks\n- A score from 0 to 10 evaluating on completion, quality,
|
||||
and overall performance- Entities extracted from the task output, if any, their
|
||||
type, description, and relationships"}], "model": "gpt-4o", "tool_choice": {"type":
|
||||
"function", "function": {"name": "TaskEvaluation"}}, "tools": [{"type": "function",
|
||||
"function": {"name": "TaskEvaluation", "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:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '2295'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=26AntG8LjHgDcgN0MYB7TgUTXmoUsQqg8yChWws9CAE-1743538222-1.0.1.1-jo5QRov4A_6L5CaGwhXx2I2aGHzSN6wvrS5Lt2yDpcV5vfTu3FlroYl2d4LBq.ySrtNMDxGQgpsA6fMg0z4iEOXpD5DT7CrJKWRNr4H7Y_k;
|
||||
_cfuvid=.HNP7WFC.O40eZMPSJZ4USQu9SYczq5v794aRx34sZg-1743538222787-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"id\": \"chatcmpl-BHcEDk89V0nWfSxs0BaUsqqVYrVxj\",\n \"object\":
|
||||
\"chat.completion\",\n \"created\": 1743538225,\n \"model\": \"gpt-4o-2024-08-06\",\n
|
||||
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
|
||||
\"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n
|
||||
\ \"id\": \"call_39zVeoea7WZ0hceVZTcAut7Z\",\n \"type\":
|
||||
\"function\",\n \"function\": {\n \"name\": \"TaskEvaluation\",\n
|
||||
\ \"arguments\": \"{\\\"suggestions\\\":[\\\"Ensure that the search
|
||||
query or specific topics are provided before starting the task.\\\",\\\"Implement
|
||||
error handling to provide more useful output or alternatives when input is insufficient.\\\",\\\"Provide
|
||||
a fallback or a default set of topics in case none are provided.\\\",\\\"Clarify
|
||||
task requirements with stakeholders if the input parameters are unclear.\\\"],\\\"quality\\\":2,\\\"entities\\\":[{\\\"name\\\":\\\"search
|
||||
query\\\",\\\"type\\\":\\\"Requirement\\\",\\\"description\\\":\\\"A parameter
|
||||
needed to perform the search operation.\\\",\\\"relationships\\\":[\\\"Without
|
||||
this entity, the task cannot be completed.\\\"]},{\\\"name\\\":\\\"URLs\\\",\\\"type\\\":\\\"Output\\\",\\\"description\\\":\\\"The
|
||||
expected result from executing the search.\\\",\\\"relationships\\\":[\\\"Expected
|
||||
output when the search query is provided.\\\"]}]}\"\n }\n }\n
|
||||
\ ],\n \"refusal\": null,\n \"annotations\": []\n },\n
|
||||
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
|
||||
\ \"usage\": {\n \"prompt_tokens\": 332,\n \"completion_tokens\": 137,\n
|
||||
\ \"total_tokens\": 469,\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_898ac29719\"\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abad21a6b7dfa-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:27 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:
|
||||
- '2597'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
x-ratelimit-limit-requests:
|
||||
- '50000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '150000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '49999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '149999807'
|
||||
x-ratelimit-reset-requests:
|
||||
- 1ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_a5c36be883759cbc3fec575604f8746e
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["search query(Requirement): A parameter needed to perform the
|
||||
search operation."], "model": "text-embedding-3-small", "encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '157'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=MCDkRAmvHC26iz7BEoKzXwq4j5v_FEX5IQepnW5ARp4-1743538221-1.0.1.1-GXJkwk8HCFy9W0tA9R.s3NWzCNJ7wCiaUFu4YCbra4nQNVJa_mN3jdnmfREeET4QfWbYGCQXuM5GHffwtQZ_W1EV3mUC4JFa3w5CCDqO41Y;
|
||||
_cfuvid=mRF3.ZghYObsvTKqmSfcqSbJFV0SBPVk2Psc.9DVGlE-1743538221434-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
14,\n \"total_tokens\": 14\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abae38c117df4-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:28 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:
|
||||
- '557'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-d44cf9799-vc45q
|
||||
x-envoy-upstream-service-time:
|
||||
- '531'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999980'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_91c495419e7c55b5f7396854da1588bc
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
- request:
|
||||
body: '{"input": ["URLs(Output): The expected result from executing the search."],
|
||||
"model": "text-embedding-3-small", "encoding_format": "base64"}'
|
||||
headers:
|
||||
accept:
|
||||
- application/json
|
||||
accept-encoding:
|
||||
- gzip, deflate
|
||||
connection:
|
||||
- keep-alive
|
||||
content-length:
|
||||
- '139'
|
||||
content-type:
|
||||
- application/json
|
||||
cookie:
|
||||
- __cf_bm=MCDkRAmvHC26iz7BEoKzXwq4j5v_FEX5IQepnW5ARp4-1743538221-1.0.1.1-GXJkwk8HCFy9W0tA9R.s3NWzCNJ7wCiaUFu4YCbra4nQNVJa_mN3jdnmfREeET4QfWbYGCQXuM5GHffwtQZ_W1EV3mUC4JFa3w5CCDqO41Y;
|
||||
_cfuvid=mRF3.ZghYObsvTKqmSfcqSbJFV0SBPVk2Psc.9DVGlE-1743538221434-0.0.1.1-604800000
|
||||
host:
|
||||
- api.openai.com
|
||||
user-agent:
|
||||
- OpenAI/Python 1.68.2
|
||||
x-stainless-arch:
|
||||
- x64
|
||||
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:
|
||||
content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\":
|
||||
\"embedding\",\n \"index\": 0,\n \"embedding\": \"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 truncated
|
||||
\ }\n ],\n \"model\": \"text-embedding-3-small\",\n \"usage\": {\n \"prompt_tokens\":
|
||||
12,\n \"total_tokens\": 12\n }\n}\n"
|
||||
headers:
|
||||
CF-RAY:
|
||||
- 929abae938887df4-GRU
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Apr 2025 20:10:29 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:
|
||||
- '199'
|
||||
openai-version:
|
||||
- '2020-10-01'
|
||||
strict-transport-security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
via:
|
||||
- envoy-router-f47df6cdf-hhnd7
|
||||
x-envoy-upstream-service-time:
|
||||
- '105'
|
||||
x-ratelimit-limit-requests:
|
||||
- '10000'
|
||||
x-ratelimit-limit-tokens:
|
||||
- '10000000'
|
||||
x-ratelimit-remaining-requests:
|
||||
- '9999'
|
||||
x-ratelimit-remaining-tokens:
|
||||
- '9999984'
|
||||
x-ratelimit-reset-requests:
|
||||
- 6ms
|
||||
x-ratelimit-reset-tokens:
|
||||
- 0s
|
||||
x-request-id:
|
||||
- req_cfdd836532f45e9c2f03d332153438f6
|
||||
http_version: HTTP/1.1
|
||||
status_code: 200
|
||||
version: 1
|
||||
File diff suppressed because it is too large.
Load diff
+180
@@ -0,0 +1,180 @@
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from mem0.memory.main import Memory
|
||||
|
||||
from crewai.agent import Agent
|
||||
from crewai.crew import Crew, Process
|
||||
from crewai.memory.external.external_memory import ExternalMemory
|
||||
from crewai.memory.external.external_memory_item import ExternalMemoryItem
|
||||
from crewai.memory.storage.interface import Storage
|
||||
from crewai.task import Task
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_mem0_memory():
|
||||
mock_memory = MagicMock(spec=Memory)
|
||||
return mock_memory
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def patch_configure_mem0(mock_mem0_memory):
|
||||
with patch(
|
||||
"crewai.memory.external.external_memory.ExternalMemory._configure_mem0",
|
||||
return_value=mock_mem0_memory,
|
||||
) as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def external_memory_with_mocked_config(patch_configure_mem0):
|
||||
embedder_config = {"provider": "mem0"}
|
||||
external_memory = ExternalMemory(embedder_config=embedder_config)
|
||||
return external_memory
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def crew_with_external_memory(external_memory_with_mocked_config, patch_configure_mem0):
|
||||
agent = Agent(
|
||||
role="Researcher",
|
||||
goal="Search relevant data and provide results",
|
||||
backstory="You are a researcher at a leading tech think tank.",
|
||||
tools=[],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
task = Task(
|
||||
description="Perform a search on specific topics.",
|
||||
expected_output="A list of relevant URLs based on the search query.",
|
||||
agent=agent,
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True,
|
||||
process=Process.sequential,
|
||||
memory=True,
|
||||
external_memory=external_memory_with_mocked_config,
|
||||
)
|
||||
|
||||
return crew
|
||||
|
||||
|
||||
def test_external_memory_initialization(external_memory_with_mocked_config):
|
||||
assert external_memory_with_mocked_config is not None
|
||||
assert isinstance(external_memory_with_mocked_config, ExternalMemory)
|
||||
|
||||
|
||||
def test_external_memory_save(external_memory_with_mocked_config):
|
||||
memory_item = ExternalMemoryItem(
|
||||
value="test value", metadata={"task": "test_task"}, agent="test_agent"
|
||||
)
|
||||
|
||||
with patch.object(ExternalMemory, "save") as mock_save:
|
||||
external_memory_with_mocked_config.save(
|
||||
value=memory_item.value,
|
||||
metadata=memory_item.metadata,
|
||||
agent=memory_item.agent,
|
||||
)
|
||||
|
||||
mock_save.assert_called_once_with(
|
||||
value=memory_item.value,
|
||||
metadata=memory_item.metadata,
|
||||
agent=memory_item.agent,
|
||||
)
|
||||
|
||||
|
||||
def test_external_memory_reset(external_memory_with_mocked_config):
|
||||
with patch(
|
||||
"crewai.memory.external.external_memory.ExternalMemory.reset"
|
||||
) as mock_reset:
|
||||
external_memory_with_mocked_config.reset()
|
||||
mock_reset.assert_called_once()
|
||||
|
||||
|
||||
def test_external_memory_supported_storages():
|
||||
supported_storages = ExternalMemory.external_supported_storages()
|
||||
assert "mem0" in supported_storages
|
||||
assert callable(supported_storages["mem0"])
|
||||
|
||||
|
||||
def test_external_memory_create_storage_invalid_provider():
|
||||
embedder_config = {"provider": "invalid_provider", "config": {}}
|
||||
|
||||
with pytest.raises(ValueError, match="Provider invalid_provider not supported"):
|
||||
ExternalMemory.create_storage(None, embedder_config)
|
||||
|
||||
|
||||
def test_external_memory_create_storage_missing_provider():
|
||||
embedder_config = {"config": {}}
|
||||
|
||||
with pytest.raises(
|
||||
ValueError, match="embedder_config must include a 'provider' key"
|
||||
):
|
||||
ExternalMemory.create_storage(None, embedder_config)
|
||||
|
||||
|
||||
def test_external_memory_create_storage_missing_config():
|
||||
with pytest.raises(ValueError, match="embedder_config is required"):
|
||||
ExternalMemory.create_storage(None, None)
|
||||
|
||||
|
||||
def test_crew_with_external_memory_initialization(crew_with_external_memory):
|
||||
assert crew_with_external_memory._external_memory is not None
|
||||
assert isinstance(crew_with_external_memory._external_memory, ExternalMemory)
|
||||
assert crew_with_external_memory._external_memory.crew == crew_with_external_memory
|
||||
|
||||
|
||||
@pytest.mark.parametrize("mem_type", ["external", "all"])
|
||||
def test_crew_external_memory_reset(mem_type, crew_with_external_memory):
|
||||
with patch(
|
||||
"crewai.memory.external.external_memory.ExternalMemory.reset"
|
||||
) as mock_reset:
|
||||
crew_with_external_memory.reset_memories(mem_type)
|
||||
mock_reset.assert_called_once()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("mem_method", ["search", "save"])
|
||||
@pytest.mark.vcr(filter_headers=["authorization"])
|
||||
def test_crew_external_memory_save(mem_method, crew_with_external_memory):
|
||||
with patch(
|
||||
f"crewai.memory.external.external_memory.ExternalMemory.{mem_method}"
|
||||
) as mock_method:
|
||||
crew_with_external_memory.kickoff()
|
||||
assert mock_method.call_count > 0
|
||||
|
||||
|
||||
def test_external_memory_custom_storage(crew_with_external_memory):
|
||||
class CustomStorage(Storage):
|
||||
def __init__(self):
|
||||
self.memories = []
|
||||
|
||||
def save(self, value, metadata=None, agent=None):
|
||||
self.memories.append({"value": value, "metadata": metadata, "agent": agent})
|
||||
|
||||
def search(self, query, limit=10, score_threshold=0.5):
|
||||
return self.memories
|
||||
|
||||
def reset(self):
|
||||
self.memories = []
|
||||
|
||||
custom_storage = CustomStorage()
|
||||
external_memory = ExternalMemory(storage=custom_storage)
|
||||
|
||||
# by ensuring the crew is set, we can test that the storage is used
|
||||
external_memory.set_crew(crew_with_external_memory)
|
||||
|
||||
test_value = "test value"
|
||||
test_metadata = {"source": "test"}
|
||||
test_agent = "test_agent"
|
||||
external_memory.save(value=test_value, metadata=test_metadata, agent=test_agent)
|
||||
|
||||
results = external_memory.search("test")
|
||||
assert len(results) == 1
|
||||
assert results[0]["value"] == test_value
|
||||
assert results[0]["metadata"] == test_metadata | {"agent": test_agent}
|
||||
|
||||
external_memory.reset()
|
||||
results = external_memory.search("test")
|
||||
assert len(results) == 0
|
||||
+31
-1
@@ -2,7 +2,16 @@ import pytest
|
||||
|
||||
from crewai.agent import Agent
|
||||
from crewai.crew import Crew
|
||||
from crewai.project import CrewBase, after_kickoff, agent, before_kickoff, crew, task
|
||||
from crewai.llm import LLM
|
||||
from crewai.project import (
|
||||
CrewBase,
|
||||
after_kickoff,
|
||||
agent,
|
||||
before_kickoff,
|
||||
crew,
|
||||
llm,
|
||||
task,
|
||||
)
|
||||
from crewai.task import Task
|
||||
|
||||
|
||||
@@ -31,6 +40,13 @@ class InternalCrew:
|
||||
agents_config = "config/agents.yaml"
|
||||
tasks_config = "config/tasks.yaml"
|
||||
|
||||
@llm
|
||||
def local_llm(self):
|
||||
return LLM(
|
||||
model='openai/model_name',
|
||||
api_key="None",
|
||||
base_url="http://xxx.xxx.xxx.xxx:8000/v1")
|
||||
|
||||
@agent
|
||||
def researcher(self):
|
||||
return Agent(config=self.agents_config["researcher"])
|
||||
@@ -105,6 +121,20 @@ def test_task_name():
|
||||
), "Custom task name is not being set as expected"
|
||||
|
||||
|
||||
def test_agent_function_calling_llm():
|
||||
crew = InternalCrew()
|
||||
llm = crew.local_llm()
|
||||
obj_llm_agent = crew.researcher()
|
||||
assert (
|
||||
obj_llm_agent.function_calling_llm is llm
|
||||
), "agent's function_calling_llm is incorrect"
|
||||
|
||||
str_llm_agent = crew.reporting_analyst()
|
||||
assert (
|
||||
str_llm_agent.function_calling_llm.model == "online_llm"
|
||||
), "agent's function_calling_llm is incorrect"
|
||||
|
||||
|
||||
@pytest.mark.vcr(filter_headers=["authorization"])
|
||||
def test_before_kickoff_modification():
|
||||
crew = InternalCrew()
|
||||
|
||||
@@ -29,41 +29,32 @@ def mem0_storage_with_mocked_config(mock_mem0_memory):
|
||||
"""Fixture to create a Mem0Storage instance with mocked dependencies"""
|
||||
|
||||
# Patch the Memory class to return our mock
|
||||
with patch('mem0.memory.main.Memory.from_config', return_value=mock_mem0_memory):
|
||||
with patch("mem0.memory.main.Memory.from_config", return_value=mock_mem0_memory):
|
||||
config = {
|
||||
"vector_store": {
|
||||
"provider": "mock_vector_store",
|
||||
"config": {
|
||||
"host": "localhost",
|
||||
"port": 6333
|
||||
}
|
||||
"config": {"host": "localhost", "port": 6333},
|
||||
},
|
||||
"llm": {
|
||||
"provider": "mock_llm",
|
||||
"config": {
|
||||
"api_key": "mock-api-key",
|
||||
"model": "mock-model"
|
||||
}
|
||||
"config": {"api_key": "mock-api-key", "model": "mock-model"},
|
||||
},
|
||||
"embedder": {
|
||||
"provider": "mock_embedder",
|
||||
"config": {
|
||||
"api_key": "mock-api-key",
|
||||
"model": "mock-model"
|
||||
}
|
||||
"config": {"api_key": "mock-api-key", "model": "mock-model"},
|
||||
},
|
||||
"graph_store": {
|
||||
"provider": "mock_graph_store",
|
||||
"config": {
|
||||
"url": "mock-url",
|
||||
"username": "mock-user",
|
||||
"password": "mock-password"
|
||||
}
|
||||
"password": "mock-password",
|
||||
},
|
||||
},
|
||||
"history_db_path": "/mock/path",
|
||||
"version": "test-version",
|
||||
"custom_fact_extraction_prompt": "mock prompt 1",
|
||||
"custom_update_memory_prompt": "mock prompt 2"
|
||||
"custom_update_memory_prompt": "mock prompt 2",
|
||||
}
|
||||
|
||||
# Instantiate the class with memory_config
|
||||
@@ -92,23 +83,73 @@ def mock_mem0_memory_client():
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mem0_storage_with_memory_client(mock_mem0_memory_client):
|
||||
def mem0_storage_with_memory_client_using_config_from_crew(mock_mem0_memory_client):
|
||||
"""Fixture to create a Mem0Storage instance with mocked dependencies"""
|
||||
|
||||
# We need to patch the MemoryClient before it's instantiated
|
||||
with patch.object(MemoryClient, '__new__', return_value=mock_mem0_memory_client):
|
||||
crew = MockCrew(
|
||||
memory_config={
|
||||
"provider": "mem0",
|
||||
"config": {"user_id": "test_user", "api_key": "ABCDEFGH", "org_id": "my_org_id", "project_id": "my_project_id"},
|
||||
}
|
||||
)
|
||||
with patch.object(MemoryClient, "__new__", return_value=mock_mem0_memory_client):
|
||||
crew = MockCrew(
|
||||
memory_config={
|
||||
"provider": "mem0",
|
||||
"config": {
|
||||
"user_id": "test_user",
|
||||
"api_key": "ABCDEFGH",
|
||||
"org_id": "my_org_id",
|
||||
"project_id": "my_project_id",
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
mem0_storage = Mem0Storage(type="short_term", crew=crew)
|
||||
return mem0_storage
|
||||
mem0_storage = Mem0Storage(type="short_term", crew=crew)
|
||||
return mem0_storage
|
||||
|
||||
|
||||
def test_mem0_storage_with_memory_client_initialization(mem0_storage_with_memory_client, mock_mem0_memory_client):
|
||||
@pytest.fixture
|
||||
def mem0_storage_with_memory_client_using_explictly_config(mock_mem0_memory_client):
|
||||
"""Fixture to create a Mem0Storage instance with mocked dependencies"""
|
||||
|
||||
# We need to patch the MemoryClient before it's instantiated
|
||||
with patch.object(MemoryClient, "__new__", return_value=mock_mem0_memory_client):
|
||||
crew = MockCrew(
|
||||
memory_config={
|
||||
"provider": "mem0",
|
||||
"config": {
|
||||
"user_id": "test_user",
|
||||
"api_key": "ABCDEFGH",
|
||||
"org_id": "my_org_id",
|
||||
"project_id": "my_project_id",
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
new_config = {"provider": "mem0", "config": {"api_key": "new-api-key"}}
|
||||
|
||||
mem0_storage = Mem0Storage(type="short_term", crew=crew, config=new_config)
|
||||
return mem0_storage
|
||||
|
||||
|
||||
def test_mem0_storage_with_memory_client_initialization(
|
||||
mem0_storage_with_memory_client_using_config_from_crew, mock_mem0_memory_client
|
||||
):
|
||||
"""Test Mem0Storage initialization with MemoryClient"""
|
||||
assert mem0_storage_with_memory_client.memory_type == "short_term"
|
||||
assert mem0_storage_with_memory_client.memory is mock_mem0_memory_client
|
||||
assert (
|
||||
mem0_storage_with_memory_client_using_config_from_crew.memory_type
|
||||
== "short_term"
|
||||
)
|
||||
assert (
|
||||
mem0_storage_with_memory_client_using_config_from_crew.memory
|
||||
is mock_mem0_memory_client
|
||||
)
|
||||
|
||||
|
||||
def test_mem0_storage_with_explict_config(
|
||||
mem0_storage_with_memory_client_using_explictly_config,
|
||||
):
|
||||
expected_config = {"provider": "mem0", "config": {"api_key": "new-api-key"}}
|
||||
assert (
|
||||
mem0_storage_with_memory_client_using_explictly_config.config == expected_config
|
||||
)
|
||||
assert (
|
||||
mem0_storage_with_memory_client_using_explictly_config.memory_config
|
||||
== expected_config
|
||||
)
|
||||
Reference in new issue
Block a user