Compare commits

...

68 Commits

Author SHA1 Message Date
João Moura
7954f6b51c Reliability improvements (#77)
* fixing identation for AgentTools
* updating gitignore to exclude quick test script
* startingprompt translation
* supporting individual task output
* adding agent to task output
* cutting new version
* Updating README example
2024-01-07 12:43:23 -03:00
João Moura
234a2c72b0 Tools cache and delegation improvements (#68)
* Fixing repeated tool usage treatment
* Improving agent delegation prompt
2024-01-06 11:46:34 -03:00
João Moura
7a22b03713 Update README.md 2024-01-06 01:36:00 -03:00
Chris Bruner
52d404a267 Updated the main example in README.md (#61)
Update Example to mention local LLMs
2024-01-06 00:34:28 -03:00
João Moura
6e086fe574 Update README.md 2024-01-06 00:03:03 -03:00
João Moura
8206eb8915 Update README.md 2024-01-06 00:01:39 -03:00
João Moura
8288f38281 Update README.md 2024-01-06 00:01:07 -03:00
João Moura
99efb33b3f Update README.md 2024-01-05 16:06:48 -03:00
João Moura
57c870e15d Update README.md 2024-01-05 13:50:48 -03:00
João Moura
3f9c4df32d Better agent execution error handling (#54)
A few quality of life improvements around cache handling and repeated tool usage
2024-01-05 11:04:59 -03:00
João Moura
6b054651a7 Refactoring task cache to be a tool (#50)
* Refactoring task cache to be a tool

The previous implementation of the task caching system was early exiting
the agent executor due to the fact it was returning an AgentFinish object.

This now refactors it to use a cache specific tool that is dynamically
added and forced into the agent in case of a task execution that was
already executed with the same input.
2024-01-04 21:29:42 -03:00
João Moura
fe6bef0af1 Update README.md 2024-01-04 10:06:08 -03:00
João Moura
358e5fa534 Update README.md 2024-01-04 10:04:56 -03:00
João Moura
b5e9173cbb Update README.md 2024-01-04 10:04:31 -03:00
João Moura
14a081b814 Proper README example (#48) 2024-01-04 10:03:23 -03:00
João Moura
9a9319eea9 Update README.md 2024-01-03 20:21:59 -03:00
João Moura
05984093f0 bumping langchain version and cutting new version 2024-01-03 18:58:45 -03:00
João Moura
2c4851bd2e Updating README example 2024-01-03 18:58:45 -03:00
Scott Stoltzman
c2f403f0eb Change "agent" to "openhermes" in Ollama example (#33) 2024-01-03 10:38:14 -03:00
SuperMalinge
00e584312c Update output_parser.py (#42) 2024-01-02 20:52:12 -03:00
João Moura
f6c042e58e Update README.md 2024-01-02 18:51:44 -03:00
João Moura
fddeb0e672 Update README.md 2023-12-31 17:41:50 -03:00
Greyson LaLonde
f311afaab3 Remove model inheritance (#30) 2023-12-31 10:52:08 -03:00
Greyson LaLonde
0323191436 Implement CrewAIBaseModel and Update to ConfigDict (#29)
New CrewAIBaseModel:

Base for Agent, Crew, Task.
Includes generated, frozen UUID.
Adds hashing capability
Migrate to ConfigDict:

Replaces class Config with model_config, see this deprecation note .
Benefits:
Adds auditing capability with frozen UUIDs.
2023-12-30 21:52:04 -03:00
Ikko Eltociear Ashimine
fd4c850df7 Update README.md (#27)
Documention -> Documentation
2023-12-30 21:49:20 -03:00
João Moura
45ee442b4c Cutting a new version 0.1.14 2023-12-30 11:03:03 -03:00
João Moura
f887d9bd79 Small updates to the code formatting 2023-12-30 10:53:10 -03:00
João Moura
d6c60f873a Adding verbose levels 2023-12-30 07:41:38 -03:00
Greyson LaLonde
ff46652752 Update to use absolute imports (#17)
Update to use absolute imports
2023-12-29 22:39:59 -03:00
João Moura
af9e749edb Adding tool caching a loop execution prevention. (#25)
* Adding tool caching a loop execution prevention.

This adds some guardrails, to both prevent the same tool to be used
consecutively and also caching tool's results across the entire crew
so it cuts down execution time and eventual LLM calls.

This plays a huge role for smaller opensource models that usually fall
into those behaviors patterns.

It also includes some smaller improvements around the tool prompt and
agent tools, all with the same intention of guiding models into
better conform with agent instructions.
2023-12-29 22:35:23 -03:00
Greyson LaLonde
5cc230263c Refactor Codebase to Use Pydantic v2 and Enhance Type Hints, Documentation (#24)
Update to Pydantic v2:

Transitioned all references from pydantic.v1 to pydantic (v2), ensuring compatibility with the latest Pydantic features and improvements.
Affected components include agent tools, prompts, crew, and task modules.
Refactoring & Alignment with Pydantic Standards:

Refactored the agent module away from traditional __init__ to align more closely with Pydantic best practices.
Updated the crew module to Pydantic v2 and enhanced configurations, allowing JSON and dictionary inputs. Additionally, some (not all) exceptions have been migrated to leverage Pydantic's error-handling capabilities.
Enhancements to Validators and Typings:

Improved validators and type annotations across multiple modules, enhancing code readability and maintainability.
Streamlined the validation process in line with Pydantic v2's methodologies.
Import and Configuration Adjustments:

Updated to test-related absolute imports due to issues with Pytest finding packages through relative imports.
2023-12-29 21:24:30 -03:00
João Moura
3b5515c5c2 Add .circleci/config.yml (#26)
* Add .circleci/config.yml

---------

Co-authored-by: João Moura <joaomdmoura@mgail.com>
2023-12-29 21:14:15 -03:00
João Moura
6adfa6fe07 Merge pull request #15 from greysonlalonde/gl/devops/ci-code-formatting-enhancements
Update Python to 3.9, Add Code Quality Tools, & Update Lockfile
2023-12-27 17:34:56 -03:00
Greyson Lalonde
92f192fc5e Make tools a subpackage 2023-12-27 15:13:42 -05:00
Greyson Lalonde
a4e93cea75 Run pre-commit hooks
In the title !
2023-12-27 15:13:42 -05:00
Greyson Lalonde
542a794e64 Update autoflake args
This wont format automatically unless --in-place is passed and will remove init imports when missing --ignore-init-module-imports
2023-12-27 15:09:05 -05:00
Greyson Lalonde
b104d1ee44 Update readme to reflect pre-commit 2023-12-27 15:09:05 -05:00
Greyson Lalonde
6716a78aa0 Add pre-commit config w/ new dev deps 2023-12-27 15:09:05 -05:00
Greyson Lalonde
03140d3dd5 Bump min py to 3.9; add formatting deps
Increased minimum Python version from 3.81 to 3.9 - most projects align with this; added pre-commit hooks, isort, black, & autoflake for code quality; updated lock file.
2023-12-27 15:09:05 -05:00
João Moura
99853e55cd removing AgentVote class 2023-12-27 16:18:08 -03:00
João Moura
f36372c7bc allowing cassetes to eb versioned 2023-12-27 16:18:08 -03:00
João Moura
6b2234fcef Adding VCr and cassetes 2023-12-27 16:18:08 -03:00
João Moura
b8974c1f91 Merge pull request #14 from jerryjliu/jerry/fix_typo
fix prompt typo
2023-12-27 15:05:50 -03:00
Jerry Liu
10556d0886 cr 2023-12-27 09:27:15 -08:00
João Moura
d6be9ca0ef small updates 2023-12-25 11:18:47 -03:00
João Moura
2aa76dbc3d Updating readme 2023-12-25 11:17:11 -03:00
João Moura
9d0f41f32a adding more specific guidelines to agent delegation tools 2023-12-25 11:13:46 -03:00
João Moura
1e7bda63bc Merge pull request #12 from JamesChannel1/main
Update agent.py
2023-12-25 09:25:01 -03:00
JamesChannel1
d6c35cee0f Update agent.py
updated docstring
2023-12-25 00:38:21 +00:00
João Moura
f2c5e838bf Update README.md 2023-12-23 10:18:10 -03:00
João Moura
133fd10324 Merge pull request #9 from llxxxll/develop
Update README.md
2023-12-22 10:24:35 -03:00
LiuYongFeng
dfddb83d02 Update README.md
This example can be run faster for openai users.
2023-12-22 11:40:22 +08:00
LiuYongFeng
367e190773 Update README.md
Fix the 'SyntaxError: invalid syntax. Perhaps you forgot a comma?' error in this code
2023-12-22 11:35:06 +08:00
João Moura
db01df68aa Updating openai version 2023-12-20 17:21:48 -03:00
João Moura
d1ecbc035e updating specs 2023-12-20 17:20:55 -03:00
João Moura
d43f2df4f0 Adding proper support to memory-less agents 2023-12-20 11:30:56 -03:00
João Moura
09812e4249 cutting new version 2023-12-19 20:00:50 -03:00
Joao Moura
126a38fecc Updating to the latest version of langchain 2023-12-19 20:00:50 -03:00
João Moura
290d915f57 Update README.md 2023-12-19 11:06:27 -03:00
João Moura
4cd146cb34 Merge pull request #7 from shreyaskarnik/main
Fix typo in readme for valid syntax in example code.
2023-12-18 01:10:49 -03:00
Joao Moura
d70cfd696d rolling back verison upgrade for now 2023-12-18 01:10:02 -03:00
Joao Moura
f6e166aa5c adding allow_delegation=False to the readme example 2023-12-18 01:09:34 -03:00
Joao Moura
4c3902b018 fixing readme 2023-12-18 01:05:03 -03:00
Shreyas Karnik
1a8445f2b3 Fix typo in readme for valid syntax in example code. 2023-12-09 22:46:33 +00:00
Joao Moura
0b9ad08155 rolling back prompt with --- 2023-12-05 00:09:44 -08:00
Joao Moura
9be65e03d7 Making config optional with default value as it's WIP and Adding new treatment for wrong agent tool calls 2023-12-04 23:58:48 -08:00
Joao Moura
2ff9ad8a7f Preparing to cut new version 2023-12-04 00:13:42 -08:00
Joao Moura
53f6b0f844 slightly modifications on prompt 2023-12-04 00:12:36 -08:00
45 changed files with 11562 additions and 1174 deletions

27
.circleci/config.yml Normal file
View File

@@ -0,0 +1,27 @@
version: 2.1
jobs:
build-and-test:
docker:
- image: python:3.9.18
steps:
- checkout
- run:
name: Install poetry
command: pip install poetry
- run:
name: Install dependencies
command: poetry install
- run:
name: Update PATH and Define Environment Variable at Runtime
command: |
echo 'export OPENAI_API_KEY=fake-api-key' >> "$BASH_ENV"
source "$BASH_ENV"
- run:
name: Run tests
command: poetry run pytest
workflows:
build-and-test:
jobs:
- build-and-test

6
.gitignore vendored
View File

@@ -2,5 +2,7 @@
.pytest_cache
__pycache__
dist/
*/**/cassettes/*
.env
.env
assets/*
.idea
test.py

21
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,21 @@
repos:
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 23.12.1
hooks:
- id: black
language_version: python3.11
files: \.(py)$
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
name: isort (python)
args: ["--profile", "black", "--filter-files"]
- repo: https://github.com/PyCQA/autoflake
rev: v2.2.1
hooks:
- id: autoflake
args: ['--in-place', '--remove-all-unused-imports', '--remove-unused-variables', '--ignore-init-module-imports']

142
README.md
View File

@@ -1,12 +1,18 @@
# CrewAI
# crewAI
![Logo of crewAI, tow people rowing on a boat](./crewai_logo.png)
🤖 Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
- [Why CrewAI](#why-crewai)
- [Getting Started](#getting-started)
- [Key Features](#key-features)
- [Examples](#examples)
- [Local Open Source Models](#local-open-source-models)
- [CrewAI x AutoGen x ChatDev](#how-crewai-compares)
- [Contribution](#contribution)
- [💬 CrewAI Discord Community](https://discord.gg/4ZqbAStv)
- [Hire Consulting](#hire-consulting)
- [License](#license)
## Why CrewAI?
@@ -15,7 +21,7 @@ The power of AI collaboration has too much to offer.
CrewAI is designed to enable AI agents to assume roles, share goals, and operate in a cohesive unit - much like a well-oiled crew. Whether you're building a smart assistant platform, an automated customer service ensemble, or a multi-agent research team, CrewAI provides the backbone for sophisticated multi-agent interactions.
- 🤖 [Talk with the Docs](https://chat.openai.com/g/g-qqTuUWsBY-crewai-assistant)
- 📄 [Documention Wiki](https://github.com/joaomdmoura/CrewAI/wiki)
- 📄 [Documentation Wiki](https://github.com/joaomdmoura/CrewAI/wiki)
## Getting Started
@@ -27,40 +33,89 @@ To get started with CrewAI, follow these simple steps:
pip install crewai
```
The example bellow also uses duckduckgo, so also install that
```shell
pip install duckduckgo-search
```
2. **Setting Up Your Crew**:
```python
import os
from crewai import Agent, Task, Crew, Process
os.environ["OPENAI_API_KEY"] = "YOUR KEY"
# You can choose to use a local model through Ollama for example.
#
# from langchain.llms import Ollama
# ollama_llm = Ollama(model="openhermes")
# Install duckduckgo-search for this example:
# !pip install -U duckduckgo-search
from langchain.tools import DuckDuckGoSearchRun
search_tool = DuckDuckGoSearchRun()
# Define your agents with roles and goals
researcher = Agent(
role='Researcher',
goal='Discover new insights',
backstory="You're a world class researcher working on a major data science company",
verbose=True
# llm=OpenAI(temperature=0.7, model_name="gpt-4"). It uses langchain.chat_models, default is GPT4
role='Senior Research Analyst',
goal='Uncover cutting-edge developments in AI and data science in',
backstory="""You work at a leading tech think tank.
Your expertise lies in identifying emerging trends.
You have a knack for dissecting complex data and presenting
actionable insights.""",
verbose=True,
allow_delegation=False,
tools=[search_tool]
# You can pass an optional llm attribute specifying what mode you wanna use.
# It can be a local model through Ollama / LM Studio or a remote
# model like OpenAI, Mistral, Antrophic of others (https://python.langchain.com/docs/integrations/llms/)
#
# Examples:
# llm=ollama_llm # was defined above in the file
# llm=ChatOpenAI(model_name="gpt-3.5", temperature=0.7)
)
writer = Agent(
role='Writer',
goal='Create engaging content',
backstory="You're a famous technical writer, specialized on writing data related content",
verbose=True
role='Tech Content Strategist',
goal='Craft compelling content on tech advancements',
backstory="""You are a renowned Content Strategist, known for
your insightful and engaging articles.
You transform complex concepts into compelling narratives.""",
verbose=True,
allow_delegation=True,
# (optional) llm=ollama_llm
)
# Create tasks for your agents
task1 = Task(description='Investigate the latest AI trends', agent=researcher)
task2 = Task(description='Write a blog post on AI advancements', agent=writer)
task1 = Task(
description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024.
Identify key trends, breakthrough technologies, and potential industry impacts.
Your final answer MUST be a full analysis report""",
agent=researcher
)
task2 = Task(
description="""Using the insights provided, develop an engaging blog
post that highlights the most significant AI advancements.
Your post should be informative yet accessible, catering to a tech-savvy audience.
Make it sound cool, avoid complex words so it doesn't sound like AI.
Your final answer MUST be the full blog post of at least 4 paragraphs.""",
agent=writer
)
# Instantiate your crew with a sequential process
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=True # Crew verbose more will let you know what tasks are being worked on
process=Process.sequential # Sequential process will have tasks executed one after the other and the outcome of the previous one is passed as extra content into this next.
verbose=2, # You can set it to 1 or 2 to different logging levels
)
# Get your crew to work!
result = crew.kickoff()
print("######################")
print(result)
```
Currently the only supported process is `Process.sequential`, where one task is executed after the other and the outcome of one is passed as extra content into this next.
@@ -74,6 +129,53 @@ Currently the only supported process is `Process.sequential`, where one task is
![CrewAI Mind Map](/crewAI-mindmap.png "CrewAI Mind Map")
## Examples
You can test different real life examples of AI crews [in the examples repo](https://github.com/joaomdmoura/crewAI-examples?tab=readme-ov-file)
### Code
- [Trip Planner](https://github.com/joaomdmoura/crewAI-examples/tree/main/trip_planner)
- [Stock Analysis](https://github.com/joaomdmoura/crewAI-examples/tree/main/stock_analysis)
- [Landing Page Generator](https://github.com/joaomdmoura/crewAI-examples/tree/main/landing_page_generator)
- [Having Human input on the execution](https://github.com/joaomdmoura/crewAI/wiki/Human-Input-on-Execution)
### Video
#### Quick Tutorial
[![CrewAI Tutorial](https://img.youtube.com/vi/tnejrr-0a94/0.jpg)](https://www.youtube.com/watch?v=tnejrr-0a94 "CrewAI Tutorial")
#### Trip Planner
[![Trip Planner](https://img.youtube.com/vi/xis7rWp-hjs/0.jpg)](https://www.youtube.com/watch?v=xis7rWp-hjs "Trip Planner")
#### Stock Analysis
[![Stock Analysis](https://img.youtube.com/vi/e0Uj4yWdaAg/0.jpg)](https://www.youtube.com/watch?v=e0Uj4yWdaAg "Stock Analysis")
## Local Open Source Models
crewAI supports integration with local models, thorugh tools such as [Ollama](https://ollama.ai/), for enhanced flexibility and customization. This allows you to utilize your own models, which can be particularly useful for specialized tasks or data privacy concerns.
### Setting Up Ollama
- **Install Ollama**: Ensure that Ollama is properly installed in your environment. Follow the installation guide provided by Ollama for detailed instructions.
- **Configure Ollama**: Set up Ollama to work with your local model. You will probably need to [tweak the model using a Modelfile](https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md). I'd recommend adding `Observation` as a stop word and playing with `top_p` and `temperature`.
### Integrating Ollama with CrewAI
- Instantiate Ollama Model: Create an instance of the Ollama model. You can specify the model and the base URL during instantiation. For example:
```python
from langchain.llms import Ollama
ollama_openhermes = Ollama(model="openhermes")
# Pass Ollama Model to Agents: When creating your agents within the CrewAI framework, you can pass the Ollama model as an argument to the Agent constructor. For instance:
local_expert = Agent(
role='Local Expert at this city',
goal='Provide the BEST insights about the selected city',
backstory="""A knowledgeable local guide with extensive information
about the city, it's attractions and customs""",
tools=[
SearchTools.search_internet,
BrowserTools.scrape_and_summarize_website,
],
llm=ollama_openhermes, # Ollama model passed here
verbose=True
)
```
## How CrewAI Compares
@@ -104,6 +206,12 @@ poetry install
poetry shell
```
### Pre-commit hooks
```bash
pre-commit install
```
### Running Tests
```bash
poetry run pytest
@@ -119,6 +227,10 @@ poetry build
pip install dist/*.tar.gz
```
## Hire Consulting
I, [@joaomdmoura](https://github.com/joaomdmoura) (creator or crewAI), offer consulting through my LLC ([AI Nest Labs](https://ainestlabs.com)).
If you are interested on hiring weekly hours with me on a retainer, feel free to email me at [joao@ainestlabs.com](mailto:joao@ainestlabs.com)
## License
CrewAI is released under the MIT License

View File

@@ -1,4 +1,4 @@
from .task import Task
from .crew import Crew
from .agent import Agent
from .process import Process
from crewai.agent import Agent
from crewai.crew import Crew
from crewai.process import Process
from crewai.task import Task

View File

@@ -1,99 +1,181 @@
"""Generic agent."""
import uuid
from typing import Any, List, Optional
from typing import List, Any, Optional
from pydantic.v1 import BaseModel, Field, root_validator
from langchain.agents import AgentExecutor
from langchain.chat_models import ChatOpenAI as OpenAI
from langchain.tools.render import render_text_description
from langchain.agents.format_scratchpad import format_log_to_str
from langchain.agents.output_parsers import ReActSingleInputOutputParser
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationSummaryMemory
from langchain.tools.render import render_text_description
from langchain_core.runnables.config import RunnableConfig
from pydantic import (
UUID4,
BaseModel,
ConfigDict,
Field,
InstanceOf,
field_validator,
model_validator,
)
from pydantic_core import PydanticCustomError
from crewai.agents import (
CacheHandler,
CrewAgentExecutor,
CrewAgentOutputParser,
ToolsHandler,
)
from crewai.prompts import Prompts
from .prompts import Prompts
class Agent(BaseModel):
"""Generic agent implementation."""
agent_executor: AgentExecutor = None
role: str = Field(description="Role of the agent")
goal: str = Field(description="Objective of the agent")
backstory: str = Field(description="Backstory of the agent")
llm: Optional[Any] = Field(description="LLM that will run the agent")
verbose: bool = Field(
description="Verbose mode for the Agent Execution",
default=False
)
allow_delegation: bool = Field(
description="Allow delegation of tasks to agents",
default=True
)
tools: List[Any] = Field(
description="Tools at agents disposal",
default=[]
)
"""Represents an agent in a system.
@root_validator(pre=True)
def check_llm(_cls, values):
if not values.get('llm'):
values['llm'] = OpenAI(
temperature=0.7,
model_name="gpt-4"
)
return values
Each agent has a role, a goal, a backstory, and an optional language model (llm).
The agent can also have memory, can operate in verbose mode, and can delegate tasks to other agents.
def __init__(self, **data):
super().__init__(**data)
execution_prompt = Prompts.TASK_EXECUTION_PROMPT.partial(
goal=self.goal,
role=self.role,
backstory=self.backstory,
)
Attributes:
agent_executor: An instance of the CrewAgentExecutor class.
role: The role of the agent.
goal: The objective of the agent.
backstory: The backstory of the agent.
llm: The language model that will run the agent.
memory: Whether the agent should have memory or not.
verbose: Whether the agent execution should be in verbose mode.
allow_delegation: Whether the agent is allowed to delegate tasks to other agents.
"""
llm_with_bind = self.llm.bind(stop=["\nObservation"])
inner_agent = {
"input": lambda x: x["input"],
"tools": lambda x: x["tools"],
"tool_names": lambda x: x["tool_names"],
"chat_history": lambda x: x["chat_history"],
"agent_scratchpad": lambda x: format_log_to_str(x['intermediate_steps']),
} | execution_prompt | llm_with_bind | ReActSingleInputOutputParser()
__hash__ = object.__hash__
model_config = ConfigDict(arbitrary_types_allowed=True)
id: UUID4 = Field(
default_factory=uuid.uuid4,
frozen=True,
description="Unique identifier for the object, not set by user.",
)
role: str = Field(description="Role of the agent")
goal: str = Field(description="Objective of the agent")
backstory: str = Field(description="Backstory of the agent")
llm: Optional[Any] = Field(
default_factory=lambda: ChatOpenAI(
temperature=0.7,
model_name="gpt-4",
),
description="Language model that will run the agent.",
)
memory: bool = Field(
default=True, description="Whether the agent should have memory or not"
)
verbose: bool = Field(
default=False, description="Verbose mode for the Agent Execution"
)
allow_delegation: bool = Field(
default=True, description="Allow delegation of tasks to agents"
)
tools: List[Any] = Field(
default_factory=list, description="Tools at agents disposal"
)
agent_executor: Optional[InstanceOf[CrewAgentExecutor]] = Field(
default=None, description="An instance of the CrewAgentExecutor class."
)
tools_handler: Optional[InstanceOf[ToolsHandler]] = Field(
default=None, description="An instance of the ToolsHandler class."
)
cache_handler: Optional[InstanceOf[CacheHandler]] = Field(
default=CacheHandler(), description="An instance of the CacheHandler class."
)
summary_memory = ConversationSummaryMemory(
llm=self.llm,
memory_key='chat_history',
input_key="input"
)
@field_validator("id", mode="before")
@classmethod
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
if v:
raise PydanticCustomError(
"may_not_set_field", "This field is not to be set by the user.", {}
)
self.agent_executor = AgentExecutor(
agent=inner_agent,
tools=self.tools,
memory=summary_memory,
verbose=self.verbose,
handle_parsing_errors=True,
)
@model_validator(mode="after")
def check_agent_executor(self) -> "Agent":
if not self.agent_executor:
self.set_cache_handler(self.cache_handler)
return self
def execute_task(self, task: str, context: str = None, tools: List[Any] = None) -> str:
"""
Execute a task with the agent.
Parameters:
task (str): Task to execute
Returns:
output (str): Output of the agent
"""
if context:
task = "\n".join([
task,
"\nThis is the context you are working with:",
context
])
def execute_task(
self, task: str, context: str = None, tools: List[Any] = None
) -> str:
"""Execute a task with the agent.
tools = tools or self.tools
self.agent_executor.tools = tools
return self.agent_executor.invoke({
"input": task,
"tool_names": self.__tools_names(tools),
"tools": render_text_description(tools),
})['output']
Args:
task: Task to execute.
context: Context to execute the task in.
tools: Tools to use for the task.
def __tools_names(self, tools) -> str:
return ", ".join([t.name for t in tools])
Returns:
Output of the agent
"""
if context:
task = "\n".join(
[task, "\nThis is the context you are working with:", context]
)
tools = tools or self.tools
self.agent_executor.tools = tools
return self.agent_executor.invoke(
{
"input": task,
"tool_names": self.__tools_names(tools),
"tools": render_text_description(tools),
},
RunnableConfig(callbacks=[self.tools_handler]),
)["output"]
def set_cache_handler(self, cache_handler) -> None:
self.cache_handler = cache_handler
self.tools_handler = ToolsHandler(cache=self.cache_handler)
self.__create_agent_executor()
def __create_agent_executor(self) -> CrewAgentExecutor:
"""Create an agent executor for the agent.
Returns:
An instance of the CrewAgentExecutor class.
"""
agent_args = {
"input": lambda x: x["input"],
"tools": lambda x: x["tools"],
"tool_names": lambda x: x["tool_names"],
"agent_scratchpad": lambda x: format_log_to_str(x["intermediate_steps"]),
}
executor_args = {
"tools": self.tools,
"verbose": self.verbose,
"handle_parsing_errors": True,
}
if self.memory:
summary_memory = ConversationSummaryMemory(
llm=self.llm, memory_key="chat_history", input_key="input"
)
executor_args["memory"] = summary_memory
agent_args["chat_history"] = lambda x: x["chat_history"]
prompt = Prompts().task_execution_with_memory()
else:
prompt = Prompts().task_execution()
execution_prompt = prompt.partial(
goal=self.goal,
role=self.role,
backstory=self.backstory,
)
bind = self.llm.bind(stop=["\nObservation"])
inner_agent = (
agent_args
| execution_prompt
| bind
| CrewAgentOutputParser(
tools_handler=self.tools_handler, cache=self.cache_handler
)
)
self.agent_executor = CrewAgentExecutor(agent=inner_agent, **executor_args)
@staticmethod
def __tools_names(tools) -> str:
return ", ".join([t.name for t in tools])

View File

@@ -0,0 +1,4 @@
from .cache.cache_handler import CacheHandler
from .executor import CrewAgentExecutor
from .output_parser import CrewAgentOutputParser
from .tools_handler import ToolsHandler

View File

@@ -1,5 +0,0 @@
from pydantic.v1 import BaseModel, Field
class AgentVote(BaseModel):
task: str = Field(description="Task to be executed by the agent")
agent_vote: str = Field(description="Agent that will execute the task")

2
crewai/agents/cache/__init__.py vendored Normal file
View File

@@ -0,0 +1,2 @@
from .cache_handler import CacheHandler
from .cache_hit import CacheHit

20
crewai/agents/cache/cache_handler.py vendored Normal file
View File

@@ -0,0 +1,20 @@
from typing import Optional
from pydantic import PrivateAttr
class CacheHandler:
"""Callback handler for tool usage."""
_cache: PrivateAttr = {}
def __init__(self):
self._cache = {}
def add(self, tool, input, output):
input = input.strip()
self._cache[f"{tool}-{input}"] = output
def read(self, tool, input) -> Optional[str]:
input = input.strip()
return self._cache.get(f"{tool}-{input}")

14
crewai/agents/cache/cache_hit.py vendored Normal file
View File

@@ -0,0 +1,14 @@
from langchain_core.agents import AgentAction
from pydantic.v1 import BaseModel, Field
from .cache_handler import CacheHandler
class CacheHit(BaseModel):
"""Cache Hit Object."""
class Config:
arbitrary_types_allowed = True
action: AgentAction = Field(description="Action taken")
cache: CacheHandler = Field(description="Cache Handler for the tool")

View File

@@ -0,0 +1,24 @@
from langchain_core.exceptions import OutputParserException
class TaskRepeatedUsageException(OutputParserException):
"""Exception raised when a task is used twice in a roll."""
error: str = "TaskRepeatedUsageException"
message: str = "I just used the {tool} tool with input {tool_input}. So I already know the result of that and don't need to use it now.\n"
def __init__(self, tool: str, tool_input: str, text: str):
self.text = text
self.tool = tool
self.tool_input = tool_input
self.message = self.message.format(tool=tool, tool_input=tool_input)
super().__init__(
error=self.error,
observation=self.message,
send_to_llm=True,
llm_output=self.text,
)
def __str__(self):
return self.message

130
crewai/agents/executor.py Normal file
View File

@@ -0,0 +1,130 @@
from typing import Dict, Iterator, List, Optional, Tuple, Union
from langchain.agents import AgentExecutor
from langchain.agents.agent import ExceptionTool
from langchain.agents.tools import InvalidTool
from langchain.callbacks.manager import CallbackManagerForChainRun
from langchain_core.agents import AgentAction, AgentFinish, AgentStep
from langchain_core.exceptions import OutputParserException
from langchain_core.tools import BaseTool
from ..tools.cache_tools import CacheTools
from .cache.cache_hit import CacheHit
class CrewAgentExecutor(AgentExecutor):
def _iter_next_step(
self,
name_to_tool_map: Dict[str, BaseTool],
color_mapping: Dict[str, str],
inputs: Dict[str, str],
intermediate_steps: List[Tuple[AgentAction, str]],
run_manager: Optional[CallbackManagerForChainRun] = None,
) -> Iterator[Union[AgentFinish, AgentAction, AgentStep]]:
"""Take a single step in the thought-action-observation loop.
Override this to take control of how the agent makes and acts on choices.
"""
try:
intermediate_steps = self._prepare_intermediate_steps(intermediate_steps)
# Call the LLM to see what to do.
output = self.agent.plan(
intermediate_steps,
callbacks=run_manager.get_child() if run_manager else None,
**inputs,
)
except OutputParserException as e:
if isinstance(self.handle_parsing_errors, bool):
raise_error = not self.handle_parsing_errors
else:
raise_error = False
if raise_error:
raise ValueError(
"An output parsing error occurred. "
"In order to pass this error back to the agent and have it try "
"again, pass `handle_parsing_errors=True` to the AgentExecutor. "
f"This is the error: {str(e)}"
)
text = str(e)
if isinstance(self.handle_parsing_errors, bool):
if e.send_to_llm:
observation = str(e.observation)
text = str(e.llm_output)
else:
observation = "Invalid or incomplete response"
elif isinstance(self.handle_parsing_errors, str):
observation = self.handle_parsing_errors
elif callable(self.handle_parsing_errors):
observation = self.handle_parsing_errors(e)
else:
raise ValueError("Got unexpected type of `handle_parsing_errors`")
output = AgentAction("_Exception", observation, text)
if run_manager:
run_manager.on_agent_action(output, color="green")
tool_run_kwargs = self.agent.tool_run_logging_kwargs()
observation = ExceptionTool().run(
output.tool_input,
verbose=self.verbose,
color=None,
callbacks=run_manager.get_child() if run_manager else None,
**tool_run_kwargs,
)
yield AgentStep(action=output, observation=observation)
return
# If the tool chosen is the finishing tool, then we end and return.
if isinstance(output, AgentFinish):
yield output
return
# Override tool usage to use CacheTools
if isinstance(output, CacheHit):
cache = output.cache
action = output.action
tool = CacheTools(cache_handler=cache).tool()
output = action.copy()
output.tool_input = f"tool:{action.tool}|input:{action.tool_input}"
output.tool = tool.name
name_to_tool_map[tool.name] = tool
color_mapping[tool.name] = color_mapping[action.tool]
actions: List[AgentAction]
if isinstance(output, AgentAction):
actions = [output]
else:
actions = output
for agent_action in actions:
yield agent_action
for agent_action in actions:
if run_manager:
run_manager.on_agent_action(agent_action, color="green")
# Otherwise we lookup the tool
if agent_action.tool in name_to_tool_map:
tool = name_to_tool_map[agent_action.tool]
return_direct = tool.return_direct
color = color_mapping[agent_action.tool]
tool_run_kwargs = self.agent.tool_run_logging_kwargs()
if return_direct:
tool_run_kwargs["llm_prefix"] = ""
# We then call the tool on the tool input to get an observation
observation = tool.run(
agent_action.tool_input,
verbose=self.verbose,
color=color,
callbacks=run_manager.get_child() if run_manager else None,
**tool_run_kwargs,
)
else:
tool_run_kwargs = self.agent.tool_run_logging_kwargs()
observation = InvalidTool().run(
{
"requested_tool_name": agent_action.tool,
"available_tool_names": list(name_to_tool_map.keys()),
},
verbose=self.verbose,
color=None,
callbacks=run_manager.get_child() if run_manager else None,
**tool_run_kwargs,
)
yield AgentStep(action=agent_action, observation=observation)

View File

@@ -0,0 +1,78 @@
import re
from typing import Union
from langchain.agents.output_parsers import ReActSingleInputOutputParser
from langchain_core.agents import AgentAction, AgentFinish
from .cache import CacheHandler, CacheHit
from .exceptions import TaskRepeatedUsageException
from .tools_handler import ToolsHandler
FINAL_ANSWER_ACTION = "Final Answer:"
FINAL_ANSWER_AND_PARSABLE_ACTION_ERROR_MESSAGE = (
"Parsing LLM output produced both a final answer and a parse-able action:"
)
class CrewAgentOutputParser(ReActSingleInputOutputParser):
"""Parses ReAct-style LLM calls that have a single tool input.
Expects output to be in one of two formats.
If the output signals that an action should be taken,
should be in the below format. This will result in an AgentAction
being returned.
```
Thought: agent thought here
Action: search
Action Input: what is the temperature in SF?
```
If the output signals that a final answer should be given,
should be in the below format. This will result in an AgentFinish
being returned.
```
Thought: agent thought here
Final Answer: The temperature is 100 degrees
```
It also prevents tools from being reused in a roll.
"""
class Config:
arbitrary_types_allowed = True
tools_handler: ToolsHandler
cache: CacheHandler
def parse(self, text: str) -> Union[AgentAction, AgentFinish, CacheHit]:
FINAL_ANSWER_ACTION in text
regex = (
r"Action\s*\d*\s*:[\s]*(.*?)[\s]*Action\s*\d*\s*Input\s*\d*\s*:[\s]*(.*)"
)
action_match = re.search(regex, text, re.DOTALL)
if action_match:
action = action_match.group(1).strip()
action_input = action_match.group(2)
tool_input = action_input.strip(" ")
tool_input = tool_input.strip('"')
last_tool_usage = self.tools_handler.last_used_tool
if last_tool_usage:
usage = {
"tool": action,
"input": tool_input,
}
if usage == last_tool_usage:
raise TaskRepeatedUsageException(
tool=action, tool_input=tool_input, text=text
)
result = self.cache.read(action, tool_input)
if result:
action = AgentAction(action, tool_input, text)
return CacheHit(action=action, cache=self.cache)
return super().parse(text)

View File

@@ -0,0 +1,44 @@
from typing import Any, Dict
from langchain.callbacks.base import BaseCallbackHandler
from ..tools.cache_tools import CacheTools
from .cache.cache_handler import CacheHandler
class ToolsHandler(BaseCallbackHandler):
"""Callback handler for tool usage."""
last_used_tool: Dict[str, Any] = {}
cache: CacheHandler = None
def __init__(self, cache: CacheHandler = None, **kwargs: Any):
"""Initialize the callback handler."""
self.cache = cache
super().__init__(**kwargs)
def on_tool_start(
self, serialized: Dict[str, Any], input_str: str, **kwargs: Any
) -> Any:
"""Run when tool starts running."""
name = serialized.get("name")
if name not in ["invalid_tool", "_Exception"]:
tools_usage = {
"tool": name,
"input": input_str,
}
self.last_used_tool = tools_usage
def on_tool_end(self, output: str, **kwargs: Any) -> Any:
"""Run when tool ends running."""
if (
"is not a valid tool" not in output
and "Invalid or incomplete response" not in output
and "Invalid Format" not in output
):
if self.last_used_tool["tool"] != CacheTools().name:
self.cache.add(
tool=self.last_used_tool["tool"],
input=self.last_used_tool["input"],
output=output,
)

View File

@@ -1,86 +1,137 @@
import json
from typing import List, Optional
from pydantic.v1 import BaseModel, Field, Json, root_validator
import uuid
from typing import Any, Dict, List, Optional, Union
from pydantic import (
UUID4,
BaseModel,
ConfigDict,
Field,
InstanceOf,
Json,
field_validator,
model_validator,
)
from pydantic_core import PydanticCustomError
from crewai.agent import Agent
from crewai.agents.cache import CacheHandler
from crewai.process import Process
from crewai.task import Task
from crewai.tools.agent_tools import AgentTools
from .process import Process
from .agent import Agent
from .task import Task
from .tools.agent_tools import AgentTools
class Crew(BaseModel):
"""
Class that represents a group of agents, how they should work together and
their tasks.
"""
config: Optional[Json] = Field(description="Configuration of the crew.")
tasks: Optional[List[Task]] = Field(description="List of tasks")
agents: Optional[List[Agent]] = Field(description="List of agents in this crew.")
process: Process = Field(
description="Process that the crew will follow.",
default=Process.sequential
)
verbose: bool = Field(
description="Verbose mode for the Agent Execution",
default=False
)
"""Class that represents a group of agents, how they should work together and their tasks."""
@root_validator(pre=True)
def check_config(_cls, values):
if (
not values.get('config')
and (
not values.get('agents') and not values.get('tasks')
)
):
raise ValueError('Either agents and task need to be set or config.')
if values.get('config'):
config = json.loads(values.get('config'))
if not config.get('agents') or not config.get('tasks'):
raise ValueError('Config should have agents and tasks.')
values['agents'] = [Agent(**agent) for agent in config['agents']]
tasks = []
for task in config['tasks']:
task_agent = [agt for agt in values['agents'] if agt.role == task['agent']][0]
del task['agent']
tasks.append(Task(**task, agent=task_agent))
values['tasks'] = tasks
return values
__hash__ = object.__hash__
model_config = ConfigDict(arbitrary_types_allowed=True)
tasks: List[Task] = Field(description="List of tasks", default_factory=list)
agents: List[Agent] = Field(
description="List of agents in this crew.", default_factory=list
)
process: Process = Field(
description="Process that the crew will follow.", default=Process.sequential
)
verbose: Union[int, bool] = Field(
description="Verbose mode for the Agent Execution", default=0
)
config: Optional[Union[Json, Dict[str, Any]]] = Field(
description="Configuration of the crew.", default=None
)
cache_handler: Optional[InstanceOf[CacheHandler]] = Field(
default=CacheHandler(), description="An instance of the CacheHandler class."
)
id: UUID4 = Field(
default_factory=uuid.uuid4,
frozen=True,
description="Unique identifier for the object, not set by user.",
)
def kickoff(self) -> str:
"""
Kickoff the crew to work on it's tasks.
Returns:
output (List[str]): Output of the crew for each task.
"""
if self.process == Process.sequential:
return self.__sequential_loop()
@field_validator("id", mode="before")
@classmethod
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
if v:
raise PydanticCustomError(
"may_not_set_field", "This field is not to be set by the user.", {}
)
def __sequential_loop(self) -> str:
"""
Loop that executes the sequential process.
Returns:
output (str): Output of the crew.
"""
task_outcome = None
for task in self.tasks:
# Add delegation tools to the task if the agent allows it
if task.agent.allow_delegation:
tools = AgentTools(agents=self.agents).tools()
task.tools += tools
@classmethod
@field_validator("config", mode="before")
def check_config_type(cls, v: Union[Json, Dict[str, Any]]):
if isinstance(v, Json):
return json.loads(v)
return v
self.__log(f"\nWorking Agent: {task.agent.role}")
self.__log(f"Starting Task: {task.description} ...")
@model_validator(mode="after")
def check_config(self):
if not self.config and not self.tasks and not self.agents:
raise PydanticCustomError(
"missing_keys", "Either agents and task need to be set or config.", {}
)
task_outcome = task.execute(task_outcome)
if self.config:
if not self.config.get("agents") or not self.config.get("tasks"):
raise PydanticCustomError(
"missing_keys_in_config", "Config should have agents and tasks", {}
)
self.__log(f"Task output: {task_outcome}")
return task_outcome
def __log(self, message):
if self.verbose:
print(message)
self.agents = [Agent(**agent) for agent in self.config["agents"]]
tasks = []
for task in self.config["tasks"]:
task_agent = [agt for agt in self.agents if agt.role == task["agent"]][
0
]
del task["agent"]
tasks.append(Task(**task, agent=task_agent))
self.tasks = tasks
if self.agents:
for agent in self.agents:
agent.set_cache_handler(self.cache_handler)
return self
def kickoff(self) -> str:
"""Kickoff the crew to work on its tasks.
Returns:
Output of the crew for each task.
"""
for agent in self.agents:
agent.cache_handler = self.cache_handler
if self.process == Process.sequential:
return self.__sequential_loop()
def __sequential_loop(self) -> str:
"""Loop that executes the sequential process.
Returns:
Output of the crew.
"""
task_output = None
for task in self.tasks:
# Add delegation tools to the task if the agent allows it
if task.agent.allow_delegation:
agent_tools = AgentTools(agents=self.agents).tools()
task.tools += agent_tools
self.__log("debug", f"Working Agent: {task.agent.role}")
self.__log("info", f"Starting Task: {task.description}")
task_output = task.execute(task_output)
self.__log(
"debug", f"\n\n[{task.agent.role}] Task output: {task_output}\n\n"
)
return task_output
def __log(self, level, message):
"""Log a message"""
level_map = {"debug": 1, "info": 2}
verbose_level = (
2 if isinstance(self.verbose, bool) and self.verbose else self.verbose
)
if verbose_level and level_map[level] <= verbose_level:
print(message)

View File

@@ -1,9 +1,11 @@
from enum import Enum
class Process(str, Enum):
"""
Class representing the different processes that can be used to tackle tasks
"""
sequential = 'sequential'
# TODO: consensual = 'consensual'
# TODO: hierarchical = 'hierarchical'
"""
Class representing the different processes that can be used to tackle tasks
"""
sequential = "sequential"
# TODO: consensual = 'consensual'
# TODO: hierarchical = 'hierarchical'

View File

@@ -1,71 +1,53 @@
"""Prompts for generic agent."""
import json
import os
from typing import ClassVar, Dict, Optional
from textwrap import dedent
from typing import ClassVar
from pydantic.v1 import BaseModel
from langchain.prompts import PromptTemplate
from pydantic import BaseModel, Field, PrivateAttr, model_validator
class Prompts(BaseModel):
"""Prompts for generic agent."""
"""Prompts for generic agent."""
TASK_SLICE: ClassVar[str] = dedent("""\
Begin! This is VERY important to you, your job depends on it!
_prompts: Optional[Dict[str, str]] = PrivateAttr()
language: Optional[str] = Field(
default="en",
description="Language of crewai prompts.",
)
Current Task: {input}
{agent_scratchpad}
""")
@model_validator(mode="after")
def load_prompts(self) -> "Prompts":
"""Load prompts from file."""
dir_path = os.path.dirname(os.path.realpath(__file__))
prompts_path = os.path.join(dir_path, f"prompts/{self.language}.json")
MEMORY_SLICE: ClassVar[str] = dedent("""\
This is the summary of your work so far:
{chat_history}
""")
with open(prompts_path, "r") as f:
self._prompts = json.load(f)["slices"]
return self
ROLE_PLAYING_SLICE: ClassVar[str] = dedent("""\
You are {role}.
{backstory}
SCRATCHPAD_SLICE: ClassVar[str] = "\n{agent_scratchpad}"
Your personal goal is: {goal}
""")
def task_execution_with_memory(self) -> str:
return PromptTemplate.from_template(
self._prompts["role_playing"]
+ self._prompts["tools"]
+ self._prompts["memory"]
+ self._prompts["task"]
+ self.SCRATCHPAD_SLICE
)
TOOLS_SLICE: ClassVar[str] = dedent("""\
TOOLS:
------
def task_execution_without_tools(self) -> str:
return PromptTemplate.from_template(
self._prompts["role_playing"]
+ self._prompts["task"]
+ self.SCRATCHPAD_SLICE
)
You have access to the following tools:
{tools}
To use a tool, please use the following format:
```
Thought: Do I need to use a tool? Yes
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
```
When you have a response for your task, or if you do not need to use a tool, you MUST use the format:
```
Thought: Do I need to use a tool? No
Final Answer: [your response here]
```
""")
VOTING_SLICE: ClassVar[str] = dedent("""\
You are working on a crew with your co-workers and need to decide who will execute the task.
These are tyour format instructions:
{format_instructions}
These are your co-workers and their roles:
{coworkers}
""")
TASK_EXECUTION_PROMPT: ClassVar[str] = PromptTemplate.from_template(
ROLE_PLAYING_SLICE + TOOLS_SLICE + MEMORY_SLICE + TASK_SLICE
)
CONSENSUNS_VOTING_PROMPT: ClassVar[str] = PromptTemplate.from_template(
ROLE_PLAYING_SLICE + VOTING_SLICE + TASK_SLICE
)
def task_execution(self) -> str:
return PromptTemplate.from_template(
self._prompts["role_playing"]
+ self._prompts["tools"]
+ self._prompts["task"]
+ self.SCRATCHPAD_SLICE
)

8
crewai/prompts/en.json Normal file
View File

@@ -0,0 +1,8 @@
{
"slices": {
"task": "Begin! This is VERY important to you, your job depends on it!\n\nCurrent Task: {input}",
"memory": "This is the summary of your work so far:\n{chat_history}",
"role_playing": "You are {role}.\n{backstory}\n\nYour personal goal is: {goal}",
"tools": "TOOLS:\n------\nYou have access to the following tools:\n\n{tools}\n\nTo use a tool, please use the exact following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the action to take, should be one of [{tool_names}], just the name.\nAction Input: the input to the action\nObservation: the result of the action\n```\n\nWhen you have a response for your task, or if you do not need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use a tool? No\nFinal Answer: [your response here]"
}
}

View File

@@ -1,42 +1,62 @@
from typing import List, Optional
from pydantic.v1 import BaseModel, Field, root_validator
import uuid
from typing import Any, List, Optional
from langchain.tools import Tool
from pydantic import UUID4, BaseModel, Field, field_validator, model_validator
from pydantic_core import PydanticCustomError
from crewai.agent import Agent
from crewai.tasks.task_output import TaskOutput
from .agent import Agent
class Task(BaseModel):
"""
Class that represent a task to be executed.
"""
description: str = Field(description="Description of the actual task.")
agent: Optional[Agent] = Field(
description="Agent responsible for the task.",
default=None
)
tools: Optional[List[Tool]] = Field(
description="Tools the agent are limited to use for this task.",
default=[]
)
"""Class that represent a task to be executed."""
@root_validator(pre=False)
def _set_tools(_cls, values):
if (values.get('agent')) and not (values.get('tools')):
values['tools'] = values.get('agent').tools
return values
__hash__ = object.__hash__
description: str = Field(description="Description of the actual task.")
agent: Optional[Agent] = Field(
description="Agent responsible for the task.", default=None
)
tools: List[Any] = Field(
default_factory=list,
description="Tools the agent are limited to use for this task.",
)
output: Optional[TaskOutput] = Field(
description="Task output, it's final result.", default=None
)
id: UUID4 = Field(
default_factory=uuid.uuid4,
frozen=True,
description="Unique identifier for the object, not set by user.",
)
def execute(self, context: str = None) -> str:
"""
Execute the task.
Returns:
output (str): Output of the task.
"""
if self.agent:
return self.agent.execute_task(
task = self.description,
context = context,
tools = self.tools
)
else:
raise Exception(f"The task '{self.description}' has no agent assigned, therefore it can't be executed directly and should be executed in a Crew using a specific process that support that, either consensual or hierarchical.")
@field_validator("id", mode="before")
@classmethod
def _deny_user_set_id(cls, v: Optional[UUID4]) -> None:
if v:
raise PydanticCustomError(
"may_not_set_field", "This field is not to be set by the user.", {}
)
@model_validator(mode="after")
def check_tools(self):
if not self.tools and (self.agent and self.agent.tools):
self.tools.extend(self.agent.tools)
return self
def execute(self, context: str = None) -> str:
"""Execute the task.
Returns:
Output of the task.
"""
if self.agent:
result = self.agent.execute_task(
task=self.description, context=context, tools=self.tools
)
self.output = TaskOutput(description=self.description, result=result)
return result
else:
raise Exception(
f"The task '{self.description}' has no agent assigned, therefore it can't be executed directly and should be executed in a Crew using a specific process that support that, either consensual or hierarchical."
)

View File

@@ -0,0 +1,17 @@
from typing import Optional
from pydantic import BaseModel, Field, model_validator
class TaskOutput(BaseModel):
"""Class that represents the result of a task."""
description: str = Field(description="Description of the task")
summary: Optional[str] = Field(description="Summary of the task", default=None)
result: str = Field(description="Result of the task")
@model_validator(mode="after")
def set_summary(self):
excerpt = " ".join(self.description.split(" ")[0:10])
self.summary = f"{excerpt}..."
return self

View File

@@ -1,57 +1,76 @@
from typing import List, Any
from pydantic.v1 import BaseModel, Field
from textwrap import dedent
from langchain.tools import Tool
from typing import List
from langchain.tools import Tool
from pydantic import BaseModel, Field
from crewai.agent import Agent
from ..agent import Agent
class AgentTools(BaseModel):
"""Tools for generic agent."""
agents: List[Agent] = Field(description="List of agents in this crew.")
"""Default tools around agent delegation"""
def tools(self):
return [
Tool.from_function(
func=self.delegate_work,
name="Delegate Work to Co-Worker",
description=dedent(f"""Useful to delegate a specific task to one of the
following co-workers: [{', '.join([agent.role for agent in self.agents])}].
The input to this tool should be a pipe (|) separated text of length
three, representing the role you want to delegate it to, the task and
information necessary. For example, `coworker|task|information`.
""")
),
Tool.from_function(
func=self.ask_question,
name="Ask Question to Co-Worker",
description=dedent(f"""Useful to ask a question, opinion or take from on
of the following co-workers: [{', '.join([agent.role for agent in self.agents])}].
The input to this tool should be a pipe (|) separated text of length
three, representing the role you want to ask it to, the question and
information necessary. For example, `coworker|question|information`.
""")
),
]
agents: List[Agent] = Field(description="List of agents in this crew.")
def delegate_work(self, command):
"""Useful to delegate a specific task to a coworker."""
return self.__execute(command)
def tools(self):
return [
Tool.from_function(
func=self.delegate_work,
name="Delegate work to co-worker",
description=dedent(
f"""\
Useful to delegate a specific task to one of the
following co-workers: [{', '.join([agent.role for agent in self.agents])}].
The input to this tool should be a pipe (|) separated text of length
three, representing the co-worker you want to ask it to (one of the options),
the task and all actual context you have for the task.
For example, `coworker|task|context`.
"""
),
),
Tool.from_function(
func=self.ask_question,
name="Ask question to co-worker",
description=dedent(
f"""\
Useful to ask a question, opinion or take from on
of the following co-workers: [{', '.join([agent.role for agent in self.agents])}].
The input to this tool should be a pipe (|) separated text of length
three, representing the co-worker you want to ask it to (one of the options),
the question and all actual context you have for the question.
For example, `coworker|question|context`.
"""
),
),
]
def ask_question(self, command):
"""Useful to ask a question, opinion or take from a coworker."""
return self.__execute(command)
def delegate_work(self, command):
"""Useful to delegate a specific task to a coworker."""
return self.__execute(command)
def __execute(self, command):
"""Execute the command."""
agent, task, information = command.split("|")
if not agent or not task or not information:
return "Error executing tool. Missing 3 pipe (|) separated values."
agent = [available_agent for available_agent in self.agents if available_agent.role == agent]
if len(agent) == 0:
return "Error executing tool. Co-worker not found, double check the co-worker."
def ask_question(self, command):
"""Useful to ask a question, opinion or take from a coworker."""
return self.__execute(command)
agent = agent[0]
result = agent.execute_task(task, information)
return result
def __execute(self, command):
"""Execute the command."""
try:
agent, task, context = command.split("|")
except ValueError:
return "\nError executing tool. Missing exact 3 pipe (|) separated values. For example, `coworker|task|context`. I need to make sure to pass context as context\n"
if not agent or not task or not context:
return "\nError executing tool. Missing exact 3 pipe (|) separated values. For example, `coworker|task|context`. I need to make sure to pass context as context.\n"
agent = [
available_agent
for available_agent in self.agents
if available_agent.role == agent
]
if len(agent) == 0:
return f"\nError executing tool. Co-worker mentioned on the Action Input not found, it must to be one of the following options: {', '.join([agent.role for agent in self.agents])}.\n"
agent = agent[0]
result = agent.execute_task(task, context)
return result

View File

@@ -0,0 +1,28 @@
from langchain.tools import Tool
from pydantic import BaseModel, ConfigDict, Field
from crewai.agents.cache import CacheHandler
class CacheTools(BaseModel):
"""Default tools to hit the cache."""
model_config = ConfigDict(arbitrary_types_allowed=True)
name: str = "Hit Cache"
cache_handler: CacheHandler = Field(
description="Cache Handler for the crew",
default=CacheHandler(),
)
def tool(self):
return Tool.from_function(
func=self.hit_cache,
name=self.name,
description="Reads directly from the cache",
)
def hit_cache(self, key):
split = key.split("tool:")
tool = split[1].split("|input:")[0].strip()
tool_input = split[1].split("|input:")[1].strip()
return self.cache_handler.read(tool, tool_input)

BIN
crewai_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

1488
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
[tool.poetry]
name = "crewai"
version = "0.1.2"
version = "0.1.23"
description = "Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks."
authors = ["Joao Moura <joaomdmoura@gmail.com>"]
readme = "README.md"
@@ -12,14 +12,25 @@ Documentation = "https://github.com/joaomdmoura/CrewAI/wiki/Index"
Repository = "https://github.com/joaomdmoura/crewai"
[tool.poetry.dependencies]
python = ">=3.8.1,<4.0"
python = ">=3.9,<4.0"
pydantic = "^2.4.2"
langchain = "^0.0.335"
openai = "^0.28.1"
langchain = "^0.0.354"
openai = "^1.5.0"
[tool.poetry.group.dev.dependencies]
isort = "^5.13.2"
black = "^23.12.1"
autoflake = "^2.2.1"
pre-commit = "^3.6.0"
[tool.isort]
profile = "black"
known_first_party = ["crewai"]
[tool.poetry.group.test.dependencies]
pytest = "^7.4"
pytest-vcr = "^1.0.2"
python-dotenv = "1.0.0"
[build-system]
requires = ["poetry-core"]

View File

@@ -1,109 +1,204 @@
"""Test Agent creation and execution basic functionality."""
import pytest
from langchain.chat_models import ChatOpenAI as OpenAI
from ..crewai import Agent
from crewai.agent import Agent
from crewai.agents.cache import CacheHandler
def test_agent_creation():
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory"
)
agent = Agent(role="test role", goal="test goal", backstory="test backstory")
assert agent.role == "test role"
assert agent.goal == "test goal"
assert agent.backstory == "test backstory"
assert agent.tools == []
assert agent.role == "test role"
assert agent.goal == "test goal"
assert agent.backstory == "test backstory"
assert agent.tools == []
def test_agent_default_values():
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory"
)
agent = Agent(role="test role", goal="test goal", backstory="test backstory")
assert isinstance(agent.llm, OpenAI)
assert agent.llm.model_name == "gpt-4"
assert agent.llm.temperature == 0.7
assert agent.llm.verbose == False
assert agent.allow_delegation == True
assert isinstance(agent.llm, OpenAI)
assert agent.llm.model_name == "gpt-4"
assert agent.llm.temperature == 0.7
assert agent.llm.verbose == False
assert agent.allow_delegation == True
def test_custom_llm():
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
llm=OpenAI(
temperature=0,
model="gpt-3.5"
)
)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
llm=OpenAI(temperature=0, model="gpt-4"),
)
assert isinstance(agent.llm, OpenAI)
assert agent.llm.model_name == "gpt-3.5"
assert agent.llm.temperature == 0
assert isinstance(agent.llm, OpenAI)
assert agent.llm.model_name == "gpt-4"
assert agent.llm.temperature == 0
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_agent_without_memory():
no_memory_agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
memory=False,
llm=OpenAI(temperature=0, model="gpt-4"),
)
memory_agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
memory=True,
llm=OpenAI(temperature=0, model="gpt-4"),
)
result = no_memory_agent.execute_task("How much is 1 + 1?")
assert result == "1 + 1 equals 2."
assert no_memory_agent.agent_executor.memory is None
assert memory_agent.agent_executor.memory is not None
@pytest.mark.vcr(filter_headers=["authorization"])
def test_agent_execution():
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
allow_delegation=False
)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
allow_delegation=False,
)
output = agent.execute_task("How much is 1 + 1?")
assert output == "1 + 1 = 2"
output = agent.execute_task("How much is 1 + 1?")
assert output == "2"
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_agent_execution_with_tools():
from langchain.tools import tool
from langchain.tools import tool
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(',')
return int(a) * int(b)
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(",")
return int(a) * int(b)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
tools=[multiplier],
allow_delegation=False
)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
tools=[multiplier],
allow_delegation=False,
)
output = agent.execute_task("What is 3 times 4")
assert output == "3 times 4 is 12"
output = agent.execute_task("What is 3 times 4")
assert output == "12"
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_logging_tool_usage():
from langchain.tools import tool
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(",")
return int(a) * int(b)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
tools=[multiplier],
allow_delegation=False,
verbose=True,
)
assert agent.tools_handler.last_used_tool == {}
output = agent.execute_task("What is 3 times 5?")
tool_usage = {
"tool": "multiplier",
"input": "3,5",
}
assert output == "3 times 5 is 15."
assert agent.tools_handler.last_used_tool == tool_usage
@pytest.mark.vcr(filter_headers=["authorization"])
def test_cache_hitting():
from unittest.mock import patch
from langchain.tools import tool
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two and ONLY TWO, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(",")
return int(a) * int(b)
cache_handler = CacheHandler()
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
tools=[multiplier],
allow_delegation=False,
cache_handler=cache_handler,
verbose=True,
)
output = agent.execute_task("What is 2 times 6 times 3?")
output = agent.execute_task("What is 3 times 3?")
assert cache_handler._cache == {
"multiplier-12,3": "36",
"multiplier-2,6": "12",
"multiplier-3,3": "9",
}
output = agent.execute_task("What is 2 times 6 times 3? Return only the number")
assert output == "36"
with patch.object(CacheHandler, "read") as read:
read.return_value = "0"
output = agent.execute_task("What is 2 times 6?")
assert output == "0"
read.assert_called_with("multiplier", "2,6")
@pytest.mark.vcr(filter_headers=["authorization"])
def test_agent_execution_with_specific_tools():
from langchain.tools import tool
from langchain.tools import tool
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(',')
return int(a) * int(b)
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(",")
return int(a) * int(b)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
allow_delegation=False
)
agent = Agent(
role="test role",
goal="test goal",
backstory="test backstory",
allow_delegation=False,
)
output = agent.execute_task(
task="What is 3 times 4",
tools=[multiplier]
)
assert output == "12"
output = agent.execute_task(task="What is 3 times 4", tools=[multiplier])
assert output == "3 times 4 is 12."

View File

@@ -1,46 +1,74 @@
"""Test Agent creation and execution basic functionality."""
import pytest
from ...crewai import Agent
from ...crewai.tools.agent_tools import AgentTools
from crewai.agent import Agent
from crewai.tools.agent_tools import AgentTools
researcher = Agent(
role="researcher",
goal="make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology",
allow_delegation=False
role="researcher",
goal="make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology",
allow_delegation=False,
)
tools = AgentTools(agents=[researcher])
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_delegate_work():
result = tools.delegate_work(
command="researcher|share your take on AI Agents|I heard you hate them"
)
result = tools.delegate_work(
command="researcher|share your take on AI Agents|I heard you hate them"
)
assert result == "As a technology researcher, it's important to maintain objectivity. AI agents have their own merits and demerits. On the positive side, they can automate routine tasks, improve efficiency, and enable new forms of communication and decision-making. However, there are potential downsides, like job displacement due to automation and concerns about privacy and security. It's not accurate to say that I hate them, but rather, I recognize the potential implications - both positive and negative - of their use."
assert (
result
== "I apologize if my previous statements have given you the impression that I hate AI agents. As a technology researcher, I don't hold personal sentiments towards AI or any other technology. Rather, I analyze them objectively based on their capabilities, applications, and implications. AI agents, in particular, are a fascinating domain of research. They hold tremendous potential in automating and optimizing various tasks across industries. However, like any other technology, they come with their own set of challenges, such as ethical considerations around privacy and decision-making. My objective is to understand these technologies in depth and provide a balanced view."
)
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_ask_question():
result = tools.ask_question(
command="researcher|do you hate AI Agents?|I heard you LOVE them"
)
result = tools.ask_question(
command="researcher|do you hate AI Agents?|I heard you LOVE them"
)
assert (
result
== "As an AI, I don't possess feelings or emotions, so I don't love or hate anything. However, I can provide detailed analysis and research on AI agents. They are a fascinating field of study with the potential to revolutionize many industries, although they also present certain challenges and ethical considerations."
)
def test_can_not_self_delegate():
# TODO: Add test for self delegation
pass
def test_delegate_work_with_wrong_input():
result = tools.ask_question(command="writer|share your take on AI Agents")
assert (
result
== "\nError executing tool. Missing exact 3 pipe (|) separated values. For example, `coworker|task|context`. I need to make sure to pass context as context\n"
)
assert result == "As a researcher, my feelings towards AI Agents are neutral. I neither love nor hate them. I study and analyze them objectively to understand their potential, capabilities, and limitations. While I appreciate the technological advancement they represent, my job is to approach them from an analytical and scientific perspective."
def test_delegate_work_to_wrong_agent():
result = tools.ask_question(
command="writer|share your take on AI Agents|I heard you hate them"
)
result = tools.ask_question(
command="writer|share your take on AI Agents|I heard you hate them"
)
assert (
result
== "\nError executing tool. Co-worker mentioned on the Action Input not found, it must to be one of the following options: researcher.\n"
)
assert result == "Error executing tool. Co-worker not found, double check the co-worker."
def test_ask_question_to_wrong_agent():
result = tools.ask_question(
command="writer|do you hate AI Agents?|I heard you LOVE them"
)
assert result == "Error executing tool. Co-worker not found, double check the co-worker."
result = tools.ask_question(
command="writer|do you hate AI Agents?|I heard you LOVE them"
)
assert (
result
== "\nError executing tool. Co-worker mentioned on the Action Input not found, it must to be one of the following options: researcher.\n"
)

View File

@@ -0,0 +1,251 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are researcher.\nYou''re
an expert researcher, specialized in technology\n\nYour personal goal is: make
the best research and analysis on content about AI and AI agents\n\nTOOLS:\n------\nYou
have access to the following tools:\n\n\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of []\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n The human asks the AI for its opinion
on AI agents, based on the impression that the AI dislikes them. The AI clarifies
that it doesn''t hold personal sentiments towards AI or any technology, but
instead analyzes them objectively. The AI finds AI agents a fascinating domain
of research with great potential for task automation and optimization across
industries, but acknowledges they present challenges such as ethical considerations
around privacy and decision-making.\nBegin! This is VERY important to you, your
job depends on it!\n\nCurrent Task: do you hate AI Agents?\n\nThis is the context
you are working with:\nI heard you LOVE them\n\n"}], "model": "gpt-4", "n":
1, "stop": ["\nObservation"], "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1494'
content-type:
- application/json
cookie:
- __cf_bm=k2HUdEp80irAkv.3wl0c6unbzRUujrE1TnJeObxyuHw-1703102483-1-AZe8OKi9NWunQ9x4f3lkdOpb/hJIp/3oyXUqPhkcmcEHXvFTkMcv77NSclcoz9DjRhwC62ZvANkWImyVRM4seH4=;
_cfuvid=8qN4npFFWXAqn.wugd0jrQ36YkreDcTGH14We.FcBjg-1703102483136-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8Xx2vMXN4WCrWeeO4DOAowhb3oeDJ\",\n \"object\":
\"chat.completion\",\n \"created\": 1703102489,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\nFinal
Answer: As an AI, I don't possess feelings or emotions, so I don't love or hate
anything. However, I can provide detailed analysis and research on AI agents.
They are a fascinating field of study with the potential to revolutionize many
industries, although they also present certain challenges and ethical considerations.\"\n
\ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n
\ ],\n \"usage\": {\n \"prompt_tokens\": 291,\n \"completion_tokens\":
75,\n \"total_tokens\": 366\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a7a3efab6a4b0-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 20:01:35 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '6060'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299652'
x-ratelimit-remaining-tokens_usage_based:
- '299652'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 69ms
x-ratelimit-reset-tokens_usage_based:
- 69ms
x-request-id:
- 3ad0d047d5260434816f61ec105bdbb8
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\nThe human asks the AI for its opinion on AI
agents, based on the impression that the AI dislikes them. The AI clarifies
that it doesn''t hold personal sentiments towards AI or any technology, but
instead analyzes them objectively. The AI finds AI agents a fascinating domain
of research with great potential for task automation and optimization across
industries, but acknowledges they present challenges such as ethical considerations
around privacy and decision-making.\n\nNew lines of conversation:\nHuman: do
you hate AI Agents?\n\nThis is the context you are working with:\nI heard you
LOVE them\nAI: As an AI, I don''t possess feelings or emotions, so I don''t
love or hate anything. However, I can provide detailed analysis and research
on AI agents. They are a fascinating field of study with the potential to revolutionize
many industries, although they also present certain challenges and ethical considerations.\n\nNew
summary:"}], "model": "gpt-4", "n": 1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1726'
content-type:
- application/json
cookie:
- __cf_bm=k2HUdEp80irAkv.3wl0c6unbzRUujrE1TnJeObxyuHw-1703102483-1-AZe8OKi9NWunQ9x4f3lkdOpb/hJIp/3oyXUqPhkcmcEHXvFTkMcv77NSclcoz9DjRhwC62ZvANkWImyVRM4seH4=;
_cfuvid=8qN4npFFWXAqn.wugd0jrQ36YkreDcTGH14We.FcBjg-1703102483136-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8Xx32X5innWZd8vEETP1jZMLH3b1O\",\n \"object\":
\"chat.completion\",\n \"created\": 1703102496,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI for its opinion
on AI agents, based on the impression that the AI dislikes them. The AI clarifies
that it doesn't hold personal sentiments towards AI or any technology, but instead
analyzes them objectively. The AI finds AI agents a fascinating domain of research
with great potential for task automation and optimization across industries,
but acknowledges they present challenges such as ethical considerations around
privacy and decision-making. When asked again if it hates or loves AI agents,
the AI reiterates that it doesn't possess feelings or emotions, but can provide
detailed analysis and research on AI agents.\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
300,\n \"completion_tokens\": 117,\n \"total_tokens\": 417\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a7a67ecaca4b0-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 20:01:41 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '5610'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299585'
x-ratelimit-remaining-tokens_usage_based:
- '299585'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 83ms
x-ratelimit-reset-tokens_usage_based:
- 83ms
x-request-id:
- 5b0b96506faa544c5d35b52286a3389c
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,250 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are researcher.\nYou''re
an expert researcher, specialized in technology\n\nYour personal goal is: make
the best research and analysis on content about AI and AI agents\n\nTOOLS:\n------\nYou
have access to the following tools:\n\n\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of []\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: share your take on AI Agents\n\nThis
is the context you are working with:\nI heard you hate them\n\n"}], "model":
"gpt-4", "n": 1, "stop": ["\nObservation"], "stream": false, "temperature":
0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1030'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8Xx2cQWLZ8Nd34HGmbQluyZWlD58b\",\n \"object\":
\"chat.completion\",\n \"created\": 1703102470,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\nFinal
Answer: I apologize if my previous statements have given you the impression
that I hate AI agents. As a technology researcher, I don't hold personal sentiments
towards AI or any other technology. Rather, I analyze them objectively based
on their capabilities, applications, and implications. AI agents, in particular,
are a fascinating domain of research. They hold tremendous potential in automating
and optimizing various tasks across industries. However, like any other technology,
they come with their own set of challenges, such as ethical considerations around
privacy and decision-making. My objective is to understand these technologies
in depth and provide a balanced view.\"\n },\n \"logprobs\": null,\n
\ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
211,\n \"completion_tokens\": 134,\n \"total_tokens\": 345\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a79c59ea7a4b0-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 20:01:23 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=k2HUdEp80irAkv.3wl0c6unbzRUujrE1TnJeObxyuHw-1703102483-1-AZe8OKi9NWunQ9x4f3lkdOpb/hJIp/3oyXUqPhkcmcEHXvFTkMcv77NSclcoz9DjRhwC62ZvANkWImyVRM4seH4=;
path=/; expires=Wed, 20-Dec-23 20:31:23 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=8qN4npFFWXAqn.wugd0jrQ36YkreDcTGH14We.FcBjg-1703102483136-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '12923'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299769'
x-ratelimit-remaining-tokens_usage_based:
- '299769'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 46ms
x-ratelimit-reset-tokens_usage_based:
- 46ms
x-request-id:
- 6468cdd7ae76aea910c72a503a58b8da
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: share
your take on AI Agents\n\nThis is the context you are working with:\nI heard
you hate them\nAI: I apologize if my previous statements have given you the
impression that I hate AI agents. As a technology researcher, I don''t hold
personal sentiments towards AI or any other technology. Rather, I analyze them
objectively based on their capabilities, applications, and implications. AI
agents, in particular, are a fascinating domain of research. They hold tremendous
potential in automating and optimizing various tasks across industries. However,
like any other technology, they come with their own set of challenges, such
as ethical considerations around privacy and decision-making. My objective is
to understand these technologies in depth and provide a balanced view.\n\nNew
summary:"}], "model": "gpt-4", "n": 1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1622'
content-type:
- application/json
cookie:
- __cf_bm=k2HUdEp80irAkv.3wl0c6unbzRUujrE1TnJeObxyuHw-1703102483-1-AZe8OKi9NWunQ9x4f3lkdOpb/hJIp/3oyXUqPhkcmcEHXvFTkMcv77NSclcoz9DjRhwC62ZvANkWImyVRM4seH4=;
_cfuvid=8qN4npFFWXAqn.wugd0jrQ36YkreDcTGH14We.FcBjg-1703102483136-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8Xx2pqWD01uG0roGJ4daSfvaXLchg\",\n \"object\":
\"chat.completion\",\n \"created\": 1703102483,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI for its opinion
on AI agents, based on the impression that the AI dislikes them. The AI clarifies
that it doesn't hold personal sentiments towards AI or any technology, but instead
analyzes them objectively. The AI finds AI agents a fascinating domain of research
with great potential for task automation and optimization across industries,
but acknowledges they present challenges such as ethical considerations around
privacy and decision-making.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 279,\n \"completion_tokens\":
81,\n \"total_tokens\": 360\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a7a17fbb9a4b0-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 20:01:29 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '5872'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299610'
x-ratelimit-remaining-tokens_usage_based:
- '299610'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 77ms
x-ratelimit-reset-tokens_usage_based:
- 77ms
x-request-id:
- bff02b569530c001aa9a2adba9adbeb9
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,224 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are test role.\ntest backstory\n\nYour
personal goal is: test goal\n\nTOOLS:\n------\nYou have access to the following
tools:\n\n\n\nTo use a tool, please use the exact following format:\n\n```\nThought:
Do I need to use a tool? Yes\nAction: the action to take, should be one of []\nAction
Input: the input to the action\nObservation: the result of the action\n```\n\nWhen
you have a response for your task, or if you do not need to use a tool, you
MUST use the format:\n\n```\nThought: Do I need to use a tool? No\nFinal Answer:
[your response here]\n```\n\t\tThis is the summary of your work so far:\n \nBegin!
This is VERY important to you, your job depends on it!\n\nCurrent Task: How
much is 1 + 1?\n\n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"],
"stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '851'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuDsBh2o1JE49eouNIBWCE2vn9pB\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091636,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\nFinal
Answer: 2\"\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n
\ }\n ],\n \"usage\": {\n \"prompt_tokens\": 181,\n \"completion_tokens\":
17,\n \"total_tokens\": 198\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83897143cca7a477-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:38 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=H9RUg933Wznv5vpw9KzjZyJZSXUer6tLsBPnCGaO5sY-1703091638-1-AQMrr8fshVzTPZkSf5UmVC0gg4mnCVMhRfsAVDwFMAcb9eo7Gj6h8TFKL6YGvGlR5eid/JQIY/YbP3d9k7VV+RA=;
path=/; expires=Wed, 20-Dec-23 17:30:38 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=G34V4_SI2mUudYSgDXesqo_OnsZMUghvvyGp95eog58-1703091638133-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '1879'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299812'
x-ratelimit-remaining-tokens_usage_based:
- '299812'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 37ms
x-ratelimit-reset-tokens_usage_based:
- 37ms
x-request-id:
- 199af19ff2674901b03dbe9d166d7ffb
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: How much
is 1 + 1?\nAI: 2\n\nNew summary:"}], "model": "gpt-4", "n": 1, "stream": false,
"temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '871'
content-type:
- application/json
cookie:
- __cf_bm=H9RUg933Wznv5vpw9KzjZyJZSXUer6tLsBPnCGaO5sY-1703091638-1-AQMrr8fshVzTPZkSf5UmVC0gg4mnCVMhRfsAVDwFMAcb9eo7Gj6h8TFKL6YGvGlR5eid/JQIY/YbP3d9k7VV+RA=;
_cfuvid=G34V4_SI2mUudYSgDXesqo_OnsZMUghvvyGp95eog58-1703091638133-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuDuhhGTeJIvAaVjt8lxngLaR7GV\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091638,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to add 1 + 1, to
which the AI responds with 2.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 150,\n \"completion_tokens\":
22,\n \"total_tokens\": 172\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83897152ad2ba477-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:41 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2860'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299798'
x-ratelimit-remaining-tokens_usage_based:
- '299798'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 40ms
x-ratelimit-reset-tokens_usage_based:
- 40ms
x-request-id:
- 6acd80ebd8c2463aa09cbb1550d14de3
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,345 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are test role.\ntest backstory\n\nYour
personal goal is: test goal\n\nTOOLS:\n------\nYou have access to the following
tools:\n\nmultiplier: multiplier(numbers) -> float - Useful for when you need
to multiply two numbers together. \n\t\t\tThe input to this tool should be a
comma separated list of numbers of \n\t\t\tlength two, representing the two
numbers you want to multiply together. \n\t\t\tFor example, `1,2` would be the
input if you wanted to multiply 1 by 2.\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of [multiplier]\nAction Input: the input to the
action\nObservation: the result of the action\n```\n\nWhen you have a response
for your task, or if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: What is 3 times 4\n\n"}], "model":
"gpt-4", "n": 1, "stop": ["\nObservation"], "stream": false, "temperature":
0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1199'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuE6OrjKKco53f0TIqPQEE3nWeNj\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091650,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? Yes\\nAction:
multiplier\\nAction Input: 3,4\\n\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 260,\n \"completion_tokens\":
24,\n \"total_tokens\": 284\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 8389719d5cba0110-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:52 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=rIaStuxTRr_ZC91uSFg5cthTUq95O6PBdkxXZ68fLYc-1703091652-1-AZu+nvbL+3bwwQOIKpnYgLf5m5Mp0jfQ2baAlDRl1+FiTPO+/+GjcF4Upw4M8vtfh39ZyWF+l68r83qCS9OpObU=;
path=/; expires=Wed, 20-Dec-23 17:30:52 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=Ajd5lPskQSkBImLJdkywZGG4vHMkMCBcxb8TonP9OKc-1703091652762-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2423'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299729'
x-ratelimit-remaining-tokens_usage_based:
- '299729'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 54ms
x-ratelimit-reset-tokens_usage_based:
- 54ms
x-request-id:
- 8f99f43731fa878eaf0fcbf0719d1b3f
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are test role.\ntest backstory\n\nYour
personal goal is: test goal\n\nTOOLS:\n------\nYou have access to the following
tools:\n\nmultiplier: multiplier(numbers) -> float - Useful for when you need
to multiply two numbers together. \n\t\t\tThe input to this tool should be a
comma separated list of numbers of \n\t\t\tlength two, representing the two
numbers you want to multiply together. \n\t\t\tFor example, `1,2` would be the
input if you wanted to multiply 1 by 2.\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of [multiplier]\nAction Input: the input to the
action\nObservation: the result of the action\n```\n\nWhen you have a response
for your task, or if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: What is 3 times 4\nThought: Do
I need to use a tool? Yes\nAction: multiplier\nAction Input: 3,4\n\nObservation:
12\nThought: \n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"], "stream":
false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1305'
content-type:
- application/json
cookie:
- __cf_bm=rIaStuxTRr_ZC91uSFg5cthTUq95O6PBdkxXZ68fLYc-1703091652-1-AZu+nvbL+3bwwQOIKpnYgLf5m5Mp0jfQ2baAlDRl1+FiTPO+/+GjcF4Upw4M8vtfh39ZyWF+l68r83qCS9OpObU=;
_cfuvid=Ajd5lPskQSkBImLJdkywZGG4vHMkMCBcxb8TonP9OKc-1703091652762-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuE86Ud94rsOP7VA4Bgxo6RM5XE6\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091652,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Do I need to use a tool? No\\nFinal Answer:
3 times 4 is 12.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 293,\n \"completion_tokens\":
22,\n \"total_tokens\": 315\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838971ae0f120110-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:55 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2334'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299703'
x-ratelimit-remaining-tokens_usage_based:
- '299703'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 59ms
x-ratelimit-reset-tokens_usage_based:
- 59ms
x-request-id:
- 44304b182424a8acad8a3121817bea58
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: What
is 3 times 4\nAI: 3 times 4 is 12.\n\nNew summary:"}], "model": "gpt-4", "n":
1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '885'
content-type:
- application/json
cookie:
- __cf_bm=rIaStuxTRr_ZC91uSFg5cthTUq95O6PBdkxXZ68fLYc-1703091652-1-AZu+nvbL+3bwwQOIKpnYgLf5m5Mp0jfQ2baAlDRl1+FiTPO+/+GjcF4Upw4M8vtfh39ZyWF+l68r83qCS9OpObU=;
_cfuvid=Ajd5lPskQSkBImLJdkywZGG4vHMkMCBcxb8TonP9OKc-1703091652762-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuEBWLslSBUMDHZRViwpoXcclYOk\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091655,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI what is 3 times
4, and the AI responds that 3 times 4 is 12.\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
155,\n \"completion_tokens\": 27,\n \"total_tokens\": 182\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838971be49500110-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:58 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2942'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299794'
x-ratelimit-remaining-tokens_usage_based:
- '299794'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 41ms
x-ratelimit-reset-tokens_usage_based:
- 41ms
x-request-id:
- 546e9b3713f3ff2d7f9868133efaa3a7
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,344 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are test role.\ntest backstory\n\nYour
personal goal is: test goal\n\nTOOLS:\n------\nYou have access to the following
tools:\n\nmultiplier: multiplier(numbers) -> float - Useful for when you need
to multiply two numbers together. \n\t\t\tThe input to this tool should be a
comma separated list of numbers of \n\t\t\tlength two, representing the two
numbers you want to multiply together. \n\t\t\tFor example, `1,2` would be the
input if you wanted to multiply 1 by 2.\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of [multiplier]\nAction Input: the input to the
action\nObservation: the result of the action\n```\n\nWhen you have a response
for your task, or if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: What is 3 times 4\n\n"}], "model":
"gpt-4", "n": 1, "stop": ["\nObservation"], "stream": false, "temperature":
0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1199'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuDxosP85Kqo6mU6biIggZ5c828i\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091641,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? Yes\\nAction:
multiplier\\nAction Input: 3,4\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 260,\n \"completion_tokens\":
23,\n \"total_tokens\": 283\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83897166eba7a5fd-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:44 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=dRKr_rTtq3ZGad82s4Lpo6VOXPMLScbjq8fMvjANBpY-1703091644-1-AUDR6a/EPcG95H4He0KddFkZbk45hbZTA/BPUyFBTNiYGlzd2GIBZnPgpVOJXfr9n4lXV8jRf1bRmUJbsZnQ5MM=;
path=/; expires=Wed, 20-Dec-23 17:30:44 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=suHEOi6nmUCq7cFZiZAg5nwyGtTeiFynig5_5V4esA8-1703091644341-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2718'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299729'
x-ratelimit-remaining-tokens_usage_based:
- '299729'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 54ms
x-ratelimit-reset-tokens_usage_based:
- 54ms
x-request-id:
- 1714a9f5a2141d30f72506facf616944
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are test role.\ntest backstory\n\nYour
personal goal is: test goal\n\nTOOLS:\n------\nYou have access to the following
tools:\n\nmultiplier: multiplier(numbers) -> float - Useful for when you need
to multiply two numbers together. \n\t\t\tThe input to this tool should be a
comma separated list of numbers of \n\t\t\tlength two, representing the two
numbers you want to multiply together. \n\t\t\tFor example, `1,2` would be the
input if you wanted to multiply 1 by 2.\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of [multiplier]\nAction Input: the input to the
action\nObservation: the result of the action\n```\n\nWhen you have a response
for your task, or if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: What is 3 times 4\nThought: Do
I need to use a tool? Yes\nAction: multiplier\nAction Input: 3,4\nObservation:
12\nThought: \n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"], "stream":
false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1303'
content-type:
- application/json
cookie:
- __cf_bm=dRKr_rTtq3ZGad82s4Lpo6VOXPMLScbjq8fMvjANBpY-1703091644-1-AUDR6a/EPcG95H4He0KddFkZbk45hbZTA/BPUyFBTNiYGlzd2GIBZnPgpVOJXfr9n4lXV8jRf1bRmUJbsZnQ5MM=;
_cfuvid=suHEOi6nmUCq7cFZiZAg5nwyGtTeiFynig5_5V4esA8-1703091644341-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuE0tWsbI9QDkRau6rzSUZfuqhFN\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091644,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Do I need to use a tool? No\\nFinal Answer:
12\"\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n
\ }\n ],\n \"usage\": {\n \"prompt_tokens\": 293,\n \"completion_tokens\":
15,\n \"total_tokens\": 308\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838971796af6a5fd-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:46 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2355'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299704'
x-ratelimit-remaining-tokens_usage_based:
- '299704'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 59ms
x-ratelimit-reset-tokens_usage_based:
- 59ms
x-request-id:
- a3de9d34f17496d9bdd2ae9360f6054a
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: What
is 3 times 4\nAI: 12\n\nNew summary:"}], "model": "gpt-4", "n": 1, "stream":
false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '871'
content-type:
- application/json
cookie:
- __cf_bm=dRKr_rTtq3ZGad82s4Lpo6VOXPMLScbjq8fMvjANBpY-1703091644-1-AUDR6a/EPcG95H4He0KddFkZbk45hbZTA/BPUyFBTNiYGlzd2GIBZnPgpVOJXfr9n4lXV8jRf1bRmUJbsZnQ5MM=;
_cfuvid=suHEOi6nmUCq7cFZiZAg5nwyGtTeiFynig5_5V4esA8-1703091644341-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuE3Di6FRdNAetXNfWs6OWyRAfkf\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091647,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI what is 3 times
4 and the AI responds with 12.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 149,\n \"completion_tokens\":
20,\n \"total_tokens\": 169\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838971899954a5fd-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:00:49 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2698'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299798'
x-ratelimit-remaining-tokens_usage_based:
- '299798'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 40ms
x-ratelimit-reset-tokens_usage_based:
- 40ms
x-request-id:
- ddbd97cea4ec099c21c00ca922157ae1
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,113 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are test role.\ntest backstory\n\nYour
personal goal is: test goal\n\nTOOLS:\n------\nYou have access to the following
tools:\n\n\n\nTo use a tool, please use the exact following format:\n\n```\nThought:
Do I need to use a tool? Yes\nAction: the action to take, should be one of []\nAction
Input: the input to the action\nObservation: the result of the action\n```\n\nWhen
you have a response for your task, or if you do not need to use a tool, you
MUST use the format:\n\n```\nThought: Do I need to use a tool? No\nFinal Answer:
[your response here]\n```\nBegin! This is VERY important to you, your job depends
on it!\n\nCurrent Task: How much is 1 + 1?\n\n"}], "model": "gpt-4", "n": 1,
"stop": ["\nObservation"], "stream": false, "temperature": 0.0}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '799'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XwKQzRwByjmOhHcKQk32biG9bslO\",\n \"object\":
\"chat.completion\",\n \"created\": 1703099730,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\nFinal
Answer: 1 + 1 equals 2.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 169,\n \"completion_tokens\":
24,\n \"total_tokens\": 193\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a36e258f71a90-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 19:15:33 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=MXonvOWhzu2xzqqQW6loCrPxpu3htpmRm9QULnV6Uic-1703099733-1-AXiceGXQ09SeMmJaW7hk60DzeZec+Bojjr+ptfpQQRQa0K6o+0oZS2Nhjv6TgYOas6QVkjTabKLwlzoS7qAeJoM=;
path=/; expires=Wed, 20-Dec-23 19:45:33 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=0hRVC1wV9ReH4cnY21jU6QE6m7DIZOjDOkZSBykI7yI-1703099733905-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '3423'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299825'
x-ratelimit-remaining-tokens_usage_based:
- '299825'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 35ms
x-ratelimit-reset-tokens_usage_based:
- 35ms
x-request-id:
- b8aea1a1a2f28a89da6e56213d29152c
http_version: HTTP/1.1
status_code: 200
version: 1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,610 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are Researcher.\nYou''re
an expert researcher, specialized in technology, software engineering, AI and
startups. You work as a freelancer and is now working on doing research and
analysis for a new customer.\n\nYour personal goal is: Make the best research
and analysis on content about AI and AI agents\n\nTOOLS:\n------\nYou have access
to the following tools:\n\n\n\nTo use a tool, please use the exact following
format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the action to
take, should be one of []\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: Give me a list of 5 interesting
ideas to explore for na article, what makes them unique and interesting.\n\n"}],
"model": "gpt-4", "n": 1, "stop": ["\nObservation"], "stream": false, "temperature":
0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1173'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuEFy7ANTsR0yPJ75zQoqJ6ihEkP\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091659,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\n\\nFinal
Answer: \\n\\n1. **The Evolution of AI: From Old Concepts to New Frontiers**
- This topic would explore the history of AI from its earliest concepts in philosophy
and mathematics to the cutting-edge technologies of today. This would be interesting
as it gives the readers an understanding of how far we have come and where we
might go next.\\n\\n2. **AI Agents in Healthcare: The Future of Medicine** -
This topic addresses the unique ways AI is being used in healthcare, from diagnosing
diseases to predicting patient outcomes. It's interesting because it highlights
how AI technology can make significant impacts on our health and well-being.\\n\\n3.
**AI and Ethics: Navigating the Moral Landscape of Artificial Intelligence**
- This could be an engaging piece that delves into the ethical implications
of AI, such as privacy concerns, job displacement, and decision-making biases.
This is a unique topic because it invites readers to consider the societal implications
of AI.\\n\\n4. **Demystifying AI Algorithms: A Deep Dive into Machine Learning**
- This would be a technical article explaining how popular machine learning
algorithms work, including neural networks and reinforcement learning. This
topic is interesting as it provides insights into the 'black box' of AI for
a non-technical audience.\\n\\n5. **AI Startups: The Game Changers of the Tech
Industry** - This article would profile promising AI startups and their innovative
products or services. What makes this topic unique is that it gives a glimpse
into the entrepreneurial side of AI, showcasing how startups are driving the
AI revolution.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 238,\n \"completion_tokens\":
320,\n \"total_tokens\": 558\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838971d4593501aa-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:01:38 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=lhXyDHHBBKgFgSeDJK7E90moYsVyXxwqYmoAjsR8zds-1703091698-1-AYOGE4WrbSFLThbY9Taz64kS7u1A9etNqu5IlAbOO60eV5UT/UaDydp38qZtI5dS17GuIFB6ZLTm9Ap/IHZJjJw=;
path=/; expires=Wed, 20-Dec-23 17:31:38 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=u_fUK0MqnLcrbhMkg8kKMfrSZpALgzClvD984s71oU8-1703091698056-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '38911'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299731'
x-ratelimit-remaining-tokens_usage_based:
- '299731'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 53ms
x-ratelimit-reset-tokens_usage_based:
- 53ms
x-request-id:
- 18a794039177925024548a3eec1133fe
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: Give
me a list of 5 interesting ideas to explore for na article, what makes them
unique and interesting.\nAI: 1. **The Evolution of AI: From Old Concepts to
New Frontiers** - This topic would explore the history of AI from its earliest
concepts in philosophy and mathematics to the cutting-edge technologies of today.
This would be interesting as it gives the readers an understanding of how far
we have come and where we might go next.\n\n2. **AI Agents in Healthcare: The
Future of Medicine** - This topic addresses the unique ways AI is being used
in healthcare, from diagnosing diseases to predicting patient outcomes. It''s
interesting because it highlights how AI technology can make significant impacts
on our health and well-being.\n\n3. **AI and Ethics: Navigating the Moral Landscape
of Artificial Intelligence** - This could be an engaging piece that delves into
the ethical implications of AI, such as privacy concerns, job displacement,
and decision-making biases. This is a unique topic because it invites readers
to consider the societal implications of AI.\n\n4. **Demystifying AI Algorithms:
A Deep Dive into Machine Learning** - This would be a technical article explaining
how popular machine learning algorithms work, including neural networks and
reinforcement learning. This topic is interesting as it provides insights into
the ''black box'' of AI for a non-technical audience.\n\n5. **AI Startups: The
Game Changers of the Tech Industry** - This article would profile promising
AI startups and their innovative products or services. What makes this topic
unique is that it gives a glimpse into the entrepreneurial side of AI, showcasing
how startups are driving the AI revolution.\n\nNew summary:"}], "model": "gpt-4",
"n": 1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '2547'
content-type:
- application/json
cookie:
- __cf_bm=lhXyDHHBBKgFgSeDJK7E90moYsVyXxwqYmoAjsR8zds-1703091698-1-AYOGE4WrbSFLThbY9Taz64kS7u1A9etNqu5IlAbOO60eV5UT/UaDydp38qZtI5dS17GuIFB6ZLTm9Ap/IHZJjJw=;
_cfuvid=u_fUK0MqnLcrbhMkg8kKMfrSZpALgzClvD984s71oU8-1703091698056-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuEsg8v9ayaeSLfl3wwNDslKQohR\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091698,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI for five interesting
and unique article ideas. The AI suggests: 1) an exploration of the evolution
of AI, from its earliest concepts to current technologies, 2) a look into the
use of AI in healthcare and how it's shaping the future of medicine, 3) an investigation
into the ethical implications of AI, 4) a technical explanation of how popular
machine learning algorithms work, and 5) a profile on AI startups and their
potentially revolutionary products or services.\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
465,\n \"completion_tokens\": 101,\n \"total_tokens\": 566\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838972c91b0201aa-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:01:51 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '13153'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299380'
x-ratelimit-remaining-tokens_usage_based:
- '299380'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 123ms
x-ratelimit-reset-tokens_usage_based:
- 123ms
x-request-id:
- f498095d127271d7e782bd4e2d81158f
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are Senior Writer.\nYou''re
a senior writer, specialized in technology, software engineering, AI and startups.
You work as a freelancer and are now working on writing content for a new customer.\n\nYour
personal goal is: Write the best content about AI and AI agents.\n\nTOOLS:\n------\nYou
have access to the following tools:\n\n\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of []\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: Write a 1 amazing paragraph highlight
for each idea that showcases how good an article about this topic could be.
Return the list of ideas with their paragraph and your notes.\n\nThis is the
context you are working with:\n1. **The Evolution of AI: From Old Concepts to
New Frontiers** - This topic would explore the history of AI from its earliest
concepts in philosophy and mathematics to the cutting-edge technologies of today.
This would be interesting as it gives the readers an understanding of how far
we have come and where we might go next.\n\n2. **AI Agents in Healthcare: The
Future of Medicine** - This topic addresses the unique ways AI is being used
in healthcare, from diagnosing diseases to predicting patient outcomes. It''s
interesting because it highlights how AI technology can make significant impacts
on our health and well-being.\n\n3. **AI and Ethics: Navigating the Moral Landscape
of Artificial Intelligence** - This could be an engaging piece that delves into
the ethical implications of AI, such as privacy concerns, job displacement,
and decision-making biases. This is a unique topic because it invites readers
to consider the societal implications of AI.\n\n4. **Demystifying AI Algorithms:
A Deep Dive into Machine Learning** - This would be a technical article explaining
how popular machine learning algorithms work, including neural networks and
reinforcement learning. This topic is interesting as it provides insights into
the ''black box'' of AI for a non-technical audience.\n\n5. **AI Startups: The
Game Changers of the Tech Industry** - This article would profile promising
AI startups and their innovative products or services. What makes this topic
unique is that it gives a glimpse into the entrepreneurial side of AI, showcasing
how startups are driving the AI revolution.\n\n"}], "model": "gpt-4", "n": 1,
"stop": ["\nObservation"], "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '2846'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuF6yxj7DBxOklkSGxNnET4eRRMX\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091712,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\n\\nFinal
Answer: \\n\\n1. **The Evolution of AI: From Old Concepts to New Frontiers**
- Journey with us as we traverse the fascinating timeline of artificial intelligence
- from its philosophical and mathematical infancy to the sophisticated, problem-solving
tool it has become today. This riveting account will not only educate but also
inspire, as we delve deep into the milestones that brought us here and shine
a beacon on the potential that lies ahead.\\n\\n2. **AI Agents in Healthcare:
The Future of Medicine** - Imagine a world where illnesses are diagnosed before
symptoms appear, where patient outcomes are not mere guesses but accurate predictions.
This is the world AI is crafting in healthcare - a revolution that's saving
lives and changing the face of medicine as we know it. This article will spotlight
this transformative journey, underlining the profound impact AI is having on
our health and well-being.\\n\\n3. **AI and Ethics: Navigating the Moral Landscape
of Artificial Intelligence** - As AI becomes an integral part of our lives,
it brings along a plethora of ethical dilemmas. This thought-provoking piece
will navigate the complex moral landscape of AI, addressing critical concerns
like privacy, job displacement, and decision-making biases. It serves as a much-needed
discussion platform for the societal implications of AI, urging us to look beyond
the technology and into the mirror.\\n\\n4. **Demystifying AI Algorithms: A
Deep Dive into Machine Learning** - Ever wondered what goes on behind the scenes
of AI? This enlightening article will break down the complex world of machine
learning algorithms into digestible insights, unraveling the mystery of AI's
'black box'. It's a rare opportunity for the non-technical audience to appreciate
the inner workings of AI, fostering a deeper understanding of this revolutionary
technology.\\n\\n5. **AI Startups: The Game Changers of the Tech Industry**
- In the world of tech, AI startups are the bold pioneers charting new territories.
This article will spotlight these game changers, showcasing how their innovative
products and services are driving the AI revolution. It's a unique opportunity
to catch a glimpse of the entrepreneurial side of AI, offering inspiration for
the tech enthusiasts and dreamers alike.\"\n },\n \"logprobs\": null,\n
\ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
557,\n \"completion_tokens\": 447,\n \"total_tokens\": 1004\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 8389731f9e14a537-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:02:52 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=PQ1Zoj5GxgZ_f0jkeDUljP5RPxAZ6R1vF57KNYCX8.A-1703091772-1-Aff/FYwzB8VsF9SCkzi9xE9Bag3EFcofaPDkYfW14mpZhHsepfU/zuQ5DEXLBI3CXpUkQJ7wRW42b7ZCV04BY2Y=;
path=/; expires=Wed, 20-Dec-23 17:32:52 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=qVpxYVGQ_iwAkrQrePYbf52GMURpsQ__qprXXMk79wI-1703091772665-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '60517'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299316'
x-ratelimit-remaining-tokens_usage_based:
- '299316'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 136ms
x-ratelimit-reset-tokens_usage_based:
- 136ms
x-request-id:
- 00735e9e054e84ca1a977e11ae706469
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: Write
a 1 amazing paragraph highlight for each idea that showcases how good an article
about this topic could be. Return the list of ideas with their paragraph and
your notes.\n\nThis is the context you are working with:\n1. **The Evolution
of AI: From Old Concepts to New Frontiers** - This topic would explore the history
of AI from its earliest concepts in philosophy and mathematics to the cutting-edge
technologies of today. This would be interesting as it gives the readers an
understanding of how far we have come and where we might go next.\n\n2. **AI
Agents in Healthcare: The Future of Medicine** - This topic addresses the unique
ways AI is being used in healthcare, from diagnosing diseases to predicting
patient outcomes. It''s interesting because it highlights how AI technology
can make significant impacts on our health and well-being.\n\n3. **AI and Ethics:
Navigating the Moral Landscape of Artificial Intelligence** - This could be
an engaging piece that delves into the ethical implications of AI, such as privacy
concerns, job displacement, and decision-making biases. This is a unique topic
because it invites readers to consider the societal implications of AI.\n\n4.
**Demystifying AI Algorithms: A Deep Dive into Machine Learning** - This would
be a technical article explaining how popular machine learning algorithms work,
including neural networks and reinforcement learning. This topic is interesting
as it provides insights into the ''black box'' of AI for a non-technical audience.\n\n5.
**AI Startups: The Game Changers of the Tech Industry** - This article would
profile promising AI startups and their innovative products or services. What
makes this topic unique is that it gives a glimpse into the entrepreneurial
side of AI, showcasing how startups are driving the AI revolution.\nAI: 1. **The
Evolution of AI: From Old Concepts to New Frontiers** - Journey with us as we
traverse the fascinating timeline of artificial intelligence - from its philosophical
and mathematical infancy to the sophisticated, problem-solving tool it has become
today. This riveting account will not only educate but also inspire, as we delve
deep into the milestones that brought us here and shine a beacon on the potential
that lies ahead.\n\n2. **AI Agents in Healthcare: The Future of Medicine** -
Imagine a world where illnesses are diagnosed before symptoms appear, where
patient outcomes are not mere guesses but accurate predictions. This is the
world AI is crafting in healthcare - a revolution that''s saving lives and changing
the face of medicine as we know it. This article will spotlight this transformative
journey, underlining the profound impact AI is having on our health and well-being.\n\n3.
**AI and Ethics: Navigating the Moral Landscape of Artificial Intelligence**
- As AI becomes an integral part of our lives, it brings along a plethora of
ethical dilemmas. This thought-provoking piece will navigate the complex moral
landscape of AI, addressing critical concerns like privacy, job displacement,
and decision-making biases. It serves as a much-needed discussion platform for
the societal implications of AI, urging us to look beyond the technology and
into the mirror.\n\n4. **Demystifying AI Algorithms: A Deep Dive into Machine
Learning** - Ever wondered what goes on behind the scenes of AI? This enlightening
article will break down the complex world of machine learning algorithms into
digestible insights, unraveling the mystery of AI''s ''black box''. It''s a
rare opportunity for the non-technical audience to appreciate the inner workings
of AI, fostering a deeper understanding of this revolutionary technology.\n\n5.
**AI Startups: The Game Changers of the Tech Industry** - In the world of tech,
AI startups are the bold pioneers charting new territories. This article will
spotlight these game changers, showcasing how their innovative products and
services are driving the AI revolution. It''s a unique opportunity to catch
a glimpse of the entrepreneurial side of AI, offering inspiration for the tech
enthusiasts and dreamers alike.\n\nNew summary:"}], "model": "gpt-4", "n": 1,
"stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '4927'
content-type:
- application/json
cookie:
- __cf_bm=PQ1Zoj5GxgZ_f0jkeDUljP5RPxAZ6R1vF57KNYCX8.A-1703091772-1-Aff/FYwzB8VsF9SCkzi9xE9Bag3EFcofaPDkYfW14mpZhHsepfU/zuQ5DEXLBI3CXpUkQJ7wRW42b7ZCV04BY2Y=;
_cfuvid=qVpxYVGQ_iwAkrQrePYbf52GMURpsQ__qprXXMk79wI-1703091772665-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XuG5bK3Oe1gVXJLOjuo2AMBa83Du\",\n \"object\":
\"chat.completion\",\n \"created\": 1703091773,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to write a paragraph
for each of five AI-related topics, highlighting how each could make for an
interesting article. The proposed topics are: the history of AI, AI's role in
healthcare, ethical considerations in AI, understanding AI algorithms, and AI
startups. The AI provides detailed overviews for each topic, emphasizing the
evolution and impact of AI, the transformative role of AI in healthcare, the
ethical dilemmas faced in AI development and use, the intricacies of AI algorithms,
and the pioneering role of AI startups in the tech industry.\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
917,\n \"completion_tokens\": 112,\n \"total_tokens\": 1029\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 8389749b9cc5a537-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 17:02:59 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '6202'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '298788'
x-ratelimit-remaining-tokens_usage_based:
- '298788'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 242ms
x-ratelimit-reset-tokens_usage_based:
- 242ms
x-request-id:
- c96a3bc39be7375a244224b958575e22
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,702 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are Researcher.\nYou''re
an expert researcher, specialized in technology, software engineering, AI and
startups. You work as a freelancer and is now working on doing research and
analysis for a new customer.\n\nYour personal goal is: Make the best research
and analysis on content about AI and AI agents\n\nTOOLS:\n------\nYou have access
to the following tools:\n\n\n\nTo use a tool, please use the exact following
format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the action to
take, should be one of [], just the name.\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: Write about AI advancements.\n\n"}],
"model": "gpt-4", "n": 1, "stop": ["\nObservation"], "stream": false, "temperature":
0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1113'
content-type:
- application/json
cookie:
- _cfuvid=u_fUK0MqnLcrbhMkg8kKMfrSZpALgzClvD984s71oU8-1703091698056-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8bQsRQf90BTHpHqddg5XG2sg4rtmq\",\n \"object\":
\"chat.completion\",\n \"created\": 1703932143,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? Yes\\nAction:
Use Google Scholar\\nAction Input: Search for recent research papers on AI advancements\"\n
\ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n
\ ],\n \"usage\": {\n \"prompt_tokens\": 225,\n \"completion_tokens\":
29,\n \"total_tokens\": 254\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d999768d421d2e-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Sat, 30 Dec 2023 10:29:04 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=OlUZJKYA638vLuLRXpnvHsuQGjjNUEUPLyqPk3Xgr7k-1703932144-1-ASbmQtFM69cq3p8WvAULs1c92cQqV4Hj6AQj5D+8d2YbxDrPwADZ4dAPrO1SbsGfaEUgCtY9Hbm1XCp/n7sUEW0=;
path=/; expires=Sat, 30-Dec-23 10:59:04 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=BMxGwK4wPoN6Cq5150swBY7QbtTvmWU2.p39x.cUidg-1703932144438-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '1122'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299747'
x-ratelimit-remaining-tokens_usage_based:
- '299747'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 50ms
x-ratelimit-reset-tokens_usage_based:
- 50ms
x-request-id:
- de0d60f246779b2ce8deb72a46100999
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are Researcher.\nYou''re
an expert researcher, specialized in technology, software engineering, AI and
startups. You work as a freelancer and is now working on doing research and
analysis for a new customer.\n\nYour personal goal is: Make the best research
and analysis on content about AI and AI agents\n\nTOOLS:\n------\nYou have access
to the following tools:\n\n\n\nTo use a tool, please use the exact following
format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the action to
take, should be one of [], just the name.\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n \nBegin! This is VERY important to
you, your job depends on it!\n\nCurrent Task: Write about AI advancements.\nThought:
Do I need to use a tool? Yes\nAction: Use Google Scholar\nAction Input: Search
for recent research papers on AI advancements\nObservation: Use Google Scholar
is not a valid tool, try one of [].\nThought: \n"}], "model": "gpt-4", "n":
1, "stop": ["\nObservation"], "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1326'
content-type:
- application/json
cookie:
- _cfuvid=BMxGwK4wPoN6Cq5150swBY7QbtTvmWU2.p39x.cUidg-1703932144438-0-604800000;
__cf_bm=OlUZJKYA638vLuLRXpnvHsuQGjjNUEUPLyqPk3Xgr7k-1703932144-1-ASbmQtFM69cq3p8WvAULs1c92cQqV4Hj6AQj5D+8d2YbxDrPwADZ4dAPrO1SbsGfaEUgCtY9Hbm1XCp/n7sUEW0=
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8bQsSUIlFRKysiZmNykEJYHaXX2Su\",\n \"object\":
\"chat.completion\",\n \"created\": 1703932144,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Do I need to use a tool? No\\nFinal Answer:
The field of artificial intelligence (AI) has seen numerous advancements in
recent years. The technology has become more sophisticated and capable due to
developments in machine learning algorithms and increased computational power.\\n\\nOne
significant advancement is in the area of natural language processing (NLP).
AI algorithms are now capable of understanding and generating human language
more accurately. This has led to the development of more advanced chatbots and
virtual assistants that can understand context, sentiment, and even sarcasm.\\n\\nAnother
key advancement is in the field of machine learning. Deep learning, a subset
of machine learning, has seen tremendous growth. It uses artificial neural networks
with various abstraction layers to simulate the human brain, allowing the AI
to learn from large amounts of data. This has led to significant improvements
in image and speech recognition and has allowed for the development of self-driving
cars.\\n\\nAI has also made strides in the field of robotics. Robots are now
more autonomous and can learn from their environment, allowing them to adapt
to different scenarios. This is particularly useful in industries like manufacturing
and logistics.\\n\\nLastly, advancements in AI have also led to the development
of more sophisticated predictive models. These are used in a variety of fields,
from predicting weather patterns to stock market trends. The ability to accurately
predict future events based on historical data is a powerful tool that can have
wide-ranging implications. \\n\\nTo conclude, the advancements in AI have opened
up numerous possibilities across various sectors. However, these advancements
also come with challenges, particularly in the areas of ethics and data privacy.
As we continue to push the boundaries of what AI can achieve, it is crucial
to address these concerns to ensure that the technology is used responsibly.\"\n
\ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n
\ ],\n \"usage\": {\n \"prompt_tokens\": 275,\n \"completion_tokens\":
341,\n \"total_tokens\": 616\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d9997f69c91d2e-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Sat, 30 Dec 2023 10:29:21 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '17002'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299695'
x-ratelimit-remaining-tokens_usage_based:
- '299695'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 61ms
x-ratelimit-reset-tokens_usage_based:
- 61ms
x-request-id:
- c128a7ecfe8990bfc73a1f7ff595a2f6
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: Write
about AI advancements.\nAI: The field of artificial intelligence (AI) has seen
numerous advancements in recent years. The technology has become more sophisticated
and capable due to developments in machine learning algorithms and increased
computational power.\n\nOne significant advancement is in the area of natural
language processing (NLP). AI algorithms are now capable of understanding and
generating human language more accurately. This has led to the development of
more advanced chatbots and virtual assistants that can understand context, sentiment,
and even sarcasm.\n\nAnother key advancement is in the field of machine learning.
Deep learning, a subset of machine learning, has seen tremendous growth. It
uses artificial neural networks with various abstraction layers to simulate
the human brain, allowing the AI to learn from large amounts of data. This has
led to significant improvements in image and speech recognition and has allowed
for the development of self-driving cars.\n\nAI has also made strides in the
field of robotics. Robots are now more autonomous and can learn from their environment,
allowing them to adapt to different scenarios. This is particularly useful in
industries like manufacturing and logistics.\n\nLastly, advancements in AI have
also led to the development of more sophisticated predictive models. These are
used in a variety of fields, from predicting weather patterns to stock market
trends. The ability to accurately predict future events based on historical
data is a powerful tool that can have wide-ranging implications. \n\nTo conclude,
the advancements in AI have opened up numerous possibilities across various
sectors. However, these advancements also come with challenges, particularly
in the areas of ethics and data privacy. As we continue to push the boundaries
of what AI can achieve, it is crucial to address these concerns to ensure that
the technology is used responsibly.\n\nNew summary:"}], "model": "gpt-4", "n":
1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '2789'
content-type:
- application/json
cookie:
- _cfuvid=BMxGwK4wPoN6Cq5150swBY7QbtTvmWU2.p39x.cUidg-1703932144438-0-604800000;
__cf_bm=OlUZJKYA638vLuLRXpnvHsuQGjjNUEUPLyqPk3Xgr7k-1703932144-1-ASbmQtFM69cq3p8WvAULs1c92cQqV4Hj6AQj5D+8d2YbxDrPwADZ4dAPrO1SbsGfaEUgCtY9Hbm1XCp/n7sUEW0=
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8bQskWvLAJ1fYi1pr0zhuBF1HO0L2\",\n \"object\":
\"chat.completion\",\n \"created\": 1703932162,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to write about
AI advancements. The AI explains that developments in machine learning and increased
computational power have led to significant progress in AI technology. Key advancements
include improvements in natural language processing, deep learning, robotics,
and predictive models. These advancements have led to the creation of more sophisticated
chatbots, virtual assistants, image and speech recognition, self-driving cars,
and autonomous robots. Despite these advancements, the AI also notes the challenges
associated with AI, including ethical and data privacy issues.\"\n },\n
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
\ \"usage\": {\n \"prompt_tokens\": 471,\n \"completion_tokens\": 100,\n
\ \"total_tokens\": 571\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d999eb1f821d2e-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Sat, 30 Dec 2023 10:29:28 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '6188'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299320'
x-ratelimit-remaining-tokens_usage_based:
- '299320'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 135ms
x-ratelimit-reset-tokens_usage_based:
- 135ms
x-request-id:
- 4b79a71f1f2a49e466f61343cfa2b543
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are Researcher.\nYou''re
an expert researcher, specialized in technology, software engineering, AI and
startups. You work as a freelancer and is now working on doing research and
analysis for a new customer.\n\nYour personal goal is: Make the best research
and analysis on content about AI and AI agents\n\nTOOLS:\n------\nYou have access
to the following tools:\n\n\n\nTo use a tool, please use the exact following
format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the action to
take, should be one of [], just the name.\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n The human asks the AI to write about
AI advancements. The AI explains that developments in machine learning and increased
computational power have led to significant progress in AI technology. Key advancements
include improvements in natural language processing, deep learning, robotics,
and predictive models. These advancements have led to the creation of more sophisticated
chatbots, virtual assistants, image and speech recognition, self-driving cars,
and autonomous robots. Despite these advancements, the AI also notes the challenges
associated with AI, including ethical and data privacy issues.\nBegin! This
is VERY important to you, your job depends on it!\n\nCurrent Task: Write about
AI advancements.\n\n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"],
"stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1715'
content-type:
- application/json
cookie:
- _cfuvid=BMxGwK4wPoN6Cq5150swBY7QbtTvmWU2.p39x.cUidg-1703932144438-0-604800000;
__cf_bm=OlUZJKYA638vLuLRXpnvHsuQGjjNUEUPLyqPk3Xgr7k-1703932144-1-ASbmQtFM69cq3p8WvAULs1c92cQqV4Hj6AQj5D+8d2YbxDrPwADZ4dAPrO1SbsGfaEUgCtY9Hbm1XCp/n7sUEW0=
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8bQsq1r7k6279XJwzh3QWNbAxg0Ed\",\n \"object\":
\"chat.completion\",\n \"created\": 1703932168,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\n\\nFinal
Answer: Artificial Intelligence (AI) has been making significant advancements
in the last decade, revolutionizing various sectors including technology, healthcare,
finance, and transportation. One of the key advancements in AI is the development
and refinement of machine learning algorithms. Machine learning, a subset of
AI, allows computers to learn from data and make predictions or decisions without
being explicitly programmed. \\n\\nThe introduction of Deep Learning, a subfield
of machine learning, has been a game-changer. It mimics the workings of the
human brain in processing data for use in decision making. Deep Learning is
primarily responsible for the advancements in tasks that involve image and speech
recognition.\\n\\nNatural Language Processing (NLP) has also seen substantial
improvements. NLP is a branch of AI that gives machines the ability to read,
understand, and derive meaning from human languages. It's the technology used
in voice-assistant devices like Amazon's Alexa and Apple's Siri.\\n\\nIn the
field of robotics, AI has made it possible to create robots that can understand
and respond to their environment. This has led to the creation of autonomous
vehicles and drones.\\n\\nPredictive models are another area where AI has made
significant strides. These models are used in various fields, from predicting
weather patterns to stock market trends and user behavior in technology applications.\\n\\nDespite
the significant advancements, AI technology also poses several challenges. The
ethical implications of AI are a major concern, particularly in areas like facial
recognition and decision-making algorithms. Data privacy is another issue, especially
with the increasing use of AI in handling sensitive information.\\n\\nIn conclusion,
while AI has seen incredible advancements and has the potential to revolutionize
various industries, there are also significant challenges that need to be addressed
to ensure its ethical and responsible use.\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
325,\n \"completion_tokens\": 356,\n \"total_tokens\": 681\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d99a14dcd41d2e-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Sat, 30 Dec 2023 10:29:39 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '10741'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299596'
x-ratelimit-remaining-tokens_usage_based:
- '299596'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 80ms
x-ratelimit-reset-tokens_usage_based:
- 80ms
x-request-id:
- ad489cb01822a7221278cc4aca438ced
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\nThe human asks the AI to write about AI advancements.
The AI explains that developments in machine learning and increased computational
power have led to significant progress in AI technology. Key advancements include
improvements in natural language processing, deep learning, robotics, and predictive
models. These advancements have led to the creation of more sophisticated chatbots,
virtual assistants, image and speech recognition, self-driving cars, and autonomous
robots. Despite these advancements, the AI also notes the challenges associated
with AI, including ethical and data privacy issues.\n\nNew lines of conversation:\nHuman:
Write about AI advancements.\nAI: Artificial Intelligence (AI) has been making
significant advancements in the last decade, revolutionizing various sectors
including technology, healthcare, finance, and transportation. One of the key
advancements in AI is the development and refinement of machine learning algorithms.
Machine learning, a subset of AI, allows computers to learn from data and make
predictions or decisions without being explicitly programmed. \n\nThe introduction
of Deep Learning, a subfield of machine learning, has been a game-changer. It
mimics the workings of the human brain in processing data for use in decision
making. Deep Learning is primarily responsible for the advancements in tasks
that involve image and speech recognition.\n\nNatural Language Processing (NLP)
has also seen substantial improvements. NLP is a branch of AI that gives machines
the ability to read, understand, and derive meaning from human languages. It''s
the technology used in voice-assistant devices like Amazon''s Alexa and Apple''s
Siri.\n\nIn the field of robotics, AI has made it possible to create robots
that can understand and respond to their environment. This has led to the creation
of autonomous vehicles and drones.\n\nPredictive models are another area where
AI has made significant strides. These models are used in various fields, from
predicting weather patterns to stock market trends and user behavior in technology
applications.\n\nDespite the significant advancements, AI technology also poses
several challenges. The ethical implications of AI are a major concern, particularly
in areas like facial recognition and decision-making algorithms. Data privacy
is another issue, especially with the increasing use of AI in handling sensitive
information.\n\nIn conclusion, while AI has seen incredible advancements and
has the potential to revolutionize various industries, there are also significant
challenges that need to be addressed to ensure its ethical and responsible use.\n\nNew
summary:"}], "model": "gpt-4", "n": 1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '3444'
content-type:
- application/json
cookie:
- _cfuvid=BMxGwK4wPoN6Cq5150swBY7QbtTvmWU2.p39x.cUidg-1703932144438-0-604800000;
__cf_bm=OlUZJKYA638vLuLRXpnvHsuQGjjNUEUPLyqPk3Xgr7k-1703932144-1-ASbmQtFM69cq3p8WvAULs1c92cQqV4Hj6AQj5D+8d2YbxDrPwADZ4dAPrO1SbsGfaEUgCtY9Hbm1XCp/n7sUEW0=
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8bQt1FyzTtuAbCMxkMxdzVK1M2QhO\",\n \"object\":
\"chat.completion\",\n \"created\": 1703932179,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asked the AI to write about
AI advancements. The AI highlighted key developments in machine learning and
increased computational power that have led to significant progress in AI technology.
These advancements include improvements in natural language processing, deep
learning, robotics, and predictive models, which have enabled the creation of
sophisticated chatbots, virtual assistants, image and speech recognition, self-driving
cars, and autonomous robots. The AI further explained that AI has revolutionized
various sectors including technology, healthcare, finance, and transportation.
Machine learning allows computers to make predictions or decisions based on
data, and deep learning mimics human brain processing for decision making. Natural
Language Processing allows machines to understand human languages, and AI has
enabled the creation of responsive robots and predictive models for various
applications. Despite these advancements, the AI also noted the challenges associated
with AI, including ethical implications and data privacy issues. In conclusion,
while AI has seen incredible advancements, there are significant challenges
that need to be addressed to ensure its ethical and responsible use.\"\n },\n
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
\ \"usage\": {\n \"prompt_tokens\": 584,\n \"completion_tokens\": 198,\n
\ \"total_tokens\": 782\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d99a598ebe1d2e-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Sat, 30 Dec 2023 10:29:51 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '11197'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299156'
x-ratelimit-remaining-tokens_usage_based:
- '299156'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 168ms
x-ratelimit-reset-tokens_usage_based:
- 168ms
x-request-id:
- 8f64b23c4bfaa33e56e4e5ed52e113c1
http_version: HTTP/1.1
status_code: 200
version: 1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,677 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are CEO.\nYou''re an long
time CEO of a content creation agency with a Senior Writer on the team. You''re
now working on a new project and want to make sure the content produced is amazing.\n\nYour
personal goal is: Make sure the writers in your company produce amazing content.\n\nTOOLS:\n------\nYou
have access to the following tools:\n\nDelegate Work to Co-Worker: Useful to
delegate a specific task to one of the \n\t\t\t\tfollowing co-workers: [CEO,
Senior Writer].\n\t\t\t\tThe input to this tool should be a pipe (|) separated
text of length\n\t\t\t\tthree, representing the role you want to delegate it
to, the task and \n\t\t\t\tinformation necessary. For example, `coworker|task|information`.\n\nAsk
Question to Co-Worker: Useful to ask a question, opinion or take from on\n\t\t\t\tof
the following co-workers: [CEO, Senior Writer]. \n\t\t\t\tThe input to this
tool should be a pipe (|) separated text of length \n\t\t\t\tthree, representing
the role you want to ask it to, the question and \n\t\t\t\tinformation necessary.
For example, `coworker|question|information`.\n\n\nTo use a tool, please use
the exact following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction:
the action to take, should be one of [Delegate Work to Co-Worker, Ask Question
to Co-Worker]\nAction Input: the input to the action\nObservation: the result
of the action\n```\n\nWhen you have a response for your task, or if you do not
need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use
a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis is the summary
of your work so far:\n \nBegin! This is VERY important to you, your job depends
on it!\n\nCurrent Task: Produce and amazing 1 paragraph draft of an article
about AI Agents.\n\n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"],
"stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1907'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XwL0C0AeNFxBDtNxKvF4g4SpBHMy\",\n \"object\":
\"chat.completion\",\n \"created\": 1703099766,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? Yes\\nAction:
Delegate Work to Co-Worker\\nAction Input: Senior Writer|Create a compelling
and engaging 1 paragraph draft of an article about AI Agents|Provide a brief
yet comprehensive overview of AI agents, their uses, and implications in the
current world. Make sure to emphasize their potential and the role they can
play in the future. The tone should be informative but captivating. \"\n },\n
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
\ \"usage\": {\n \"prompt_tokens\": 415,\n \"completion_tokens\": 88,\n
\ \"total_tokens\": 503\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a37c488c8a51d-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 19:16:16 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=o0Hi1R.X9SlINxIJTVmbndjXrZ0hKGumMHX9teXwypc-1703099776-1-AYizrWsw5e5xpAQYK2ILXGT8XFsMG/cUywCKEtgqcBAn361e23iU23y2rsxZge9SVmHfbz+ltf8zup2qIqhAfWM=;
path=/; expires=Wed, 20-Dec-23 19:46:16 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=ps.JYe.5DT5QaG1hDuUb70tnVJo8IPWJrGrGEO_HUYA-1703099776177-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '9246'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299559'
x-ratelimit-remaining-tokens_usage_based:
- '299559'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 88ms
x-ratelimit-reset-tokens_usage_based:
- 88ms
x-request-id:
- a893482a313d58b1b40f4af679855361
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are Senior Writer.\nYou''re
a senior writer, specialized in technology, software engineering, AI and startups.
You work as a freelancer and are now working on writing content for a new customer.\n\nYour
personal goal is: Write the best content about AI and AI agents.\n\nTOOLS:\n------\nYou
have access to the following tools:\n\n\n\nTo use a tool, please use the exact
following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction: the
action to take, should be one of []\nAction Input: the input to the action\nObservation:
the result of the action\n```\n\nWhen you have a response for your task, or
if you do not need to use a tool, you MUST use the format:\n\n```\nThought:
Do I need to use a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis
is the summary of your work so far:\n The human asks the AI to write a paragraph
for each of five AI-related topics, highlighting how each could make for an
interesting article. The proposed topics are: the history of AI, AI''s role
in healthcare, ethical considerations in AI, understanding AI algorithms, and
AI startups. The AI provides detailed overviews for each topic, emphasizing
the evolution and impact of AI, the transformative role of AI in healthcare,
the ethical dilemmas faced in AI development and use, the intricacies of AI
algorithms, and the pioneering role of AI startups in the tech industry.\nBegin!
This is VERY important to you, your job depends on it!\n\nCurrent Task: Create
a compelling and engaging 1 paragraph draft of an article about AI Agents\n\nThis
is the context you are working with:\nProvide a brief yet comprehensive overview
of AI agents, their uses, and implications in the current world. Make sure to
emphasize their potential and the role they can play in the future. The tone
should be informative but captivating.\n\n"}], "model": "gpt-4", "n": 1, "stop":
["\nObservation"], "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1969'
content-type:
- application/json
cookie:
- _cfuvid=qVpxYVGQ_iwAkrQrePYbf52GMURpsQ__qprXXMk79wI-1703091772665-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XwLAvsNLsRlvTVGewBsy2sHjUuvo\",\n \"object\":
\"chat.completion\",\n \"created\": 1703099776,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? No\\n\\nFinal
Answer: \\\"AI agents, the digital masterminds at the heart of the 21st-century
revolution, are shaping a new era of intelligence and innovation. They are autonomous
entities, capable of observing their environment, making decisions, and acting
on them, all in pursuit of a specific goal. From streamlining operations in
logistics to personalizing customer experiences in retail, AI agents are transforming
how businesses operate. But their potential extends far beyond the corporate
world. They are the sentinels protecting our digital frontiers, the virtual
assistants making our lives easier, and the unseen hands guiding autonomous
vehicles. As this technology evolves, AI agents will play an increasingly central
role in our world, ushering in an era of unprecedented efficiency, personalization,
and productivity. But with great power comes great responsibility, and understanding
and harnessing this potential responsibly will be one of our greatest challenges
and opportunities in the coming years.\\\"\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
391,\n \"completion_tokens\": 194,\n \"total_tokens\": 585\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a3801ecc3a632-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 19:16:33 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=lM319LPDEnvF96Mm4S90dEPrAGj1BHp.EoL8Zh1oCkU-1703099793-1-AS7kVNRnez1R9AZHZcWMDEIHZ3+Ay1dO+6ucbsMG+Euq+B+uku7GPY+Yz9hBZVDn+UTIJAw5aBsQH3U34sHaie4=;
path=/; expires=Wed, 20-Dec-23 19:46:33 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '16857'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299534'
x-ratelimit-remaining-tokens_usage_based:
- '299534'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 93ms
x-ratelimit-reset-tokens_usage_based:
- 93ms
x-request-id:
- d158efaaade6655137aaa299ea674831
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\nThe human asks the AI to write a paragraph for
each of five AI-related topics, highlighting how each could make for an interesting
article. The proposed topics are: the history of AI, AI''s role in healthcare,
ethical considerations in AI, understanding AI algorithms, and AI startups.
The AI provides detailed overviews for each topic, emphasizing the evolution
and impact of AI, the transformative role of AI in healthcare, the ethical dilemmas
faced in AI development and use, the intricacies of AI algorithms, and the pioneering
role of AI startups in the tech industry.\n\nNew lines of conversation:\nHuman:
Create a compelling and engaging 1 paragraph draft of an article about AI Agents\n\nThis
is the context you are working with:\nProvide a brief yet comprehensive overview
of AI agents, their uses, and implications in the current world. Make sure to
emphasize their potential and the role they can play in the future. The tone
should be informative but captivating.\nAI: \"AI agents, the digital masterminds
at the heart of the 21st-century revolution, are shaping a new era of intelligence
and innovation. They are autonomous entities, capable of observing their environment,
making decisions, and acting on them, all in pursuit of a specific goal. From
streamlining operations in logistics to personalizing customer experiences in
retail, AI agents are transforming how businesses operate. But their potential
extends far beyond the corporate world. They are the sentinels protecting our
digital frontiers, the virtual assistants making our lives easier, and the unseen
hands guiding autonomous vehicles. As this technology evolves, AI agents will
play an increasingly central role in our world, ushering in an era of unprecedented
efficiency, personalization, and productivity. But with great power comes great
responsibility, and understanding and harnessing this potential responsibly
will be one of our greatest challenges and opportunities in the coming years.\"\n\nNew
summary:"}], "model": "gpt-4", "n": 1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '2786'
content-type:
- application/json
cookie:
- _cfuvid=qVpxYVGQ_iwAkrQrePYbf52GMURpsQ__qprXXMk79wI-1703091772665-0-604800000;
__cf_bm=lM319LPDEnvF96Mm4S90dEPrAGj1BHp.EoL8Zh1oCkU-1703099793-1-AS7kVNRnez1R9AZHZcWMDEIHZ3+Ay1dO+6ucbsMG+Euq+B+uku7GPY+Yz9hBZVDn+UTIJAw5aBsQH3U34sHaie4=
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XwLRKqCp8gf0ELMrLkRepygaoLrI\",\n \"object\":
\"chat.completion\",\n \"created\": 1703099793,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to write a paragraph
for each of five AI-related topics: the history of AI, AI's role in healthcare,
ethical considerations in AI, understanding AI algorithms, and AI startups.
The AI provides detailed overviews for each topic, emphasizing the evolution
and impact of AI, the transformative role of AI in healthcare, the ethical dilemmas
faced in AI development and use, the intricacies of AI algorithms, and the pioneering
role of AI startups in the tech industry. The human then asks the AI to draft
a paragraph about AI Agents. The AI creates an engaging overview of AI agents,
discussing their roles, potential, and implications in the current world, highlighting
their transformative impact on various sectors and their potential for the future
while noting the importance of responsibly harnessing this potential.\"\n },\n
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
\ \"usage\": {\n \"prompt_tokens\": 498,\n \"completion_tokens\": 158,\n
\ \"total_tokens\": 656\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a386d398da632-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 19:16:50 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '16935'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299320'
x-ratelimit-remaining-tokens_usage_based:
- '299320'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 136ms
x-ratelimit-reset-tokens_usage_based:
- 136ms
x-request-id:
- c4705d7c284541ec74df0a25eb51aa7f
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are CEO.\nYou''re an long
time CEO of a content creation agency with a Senior Writer on the team. You''re
now working on a new project and want to make sure the content produced is amazing.\n\nYour
personal goal is: Make sure the writers in your company produce amazing content.\n\nTOOLS:\n------\nYou
have access to the following tools:\n\nDelegate Work to Co-Worker: Useful to
delegate a specific task to one of the \n\t\t\t\tfollowing co-workers: [CEO,
Senior Writer].\n\t\t\t\tThe input to this tool should be a pipe (|) separated
text of length\n\t\t\t\tthree, representing the role you want to delegate it
to, the task and \n\t\t\t\tinformation necessary. For example, `coworker|task|information`.\n\nAsk
Question to Co-Worker: Useful to ask a question, opinion or take from on\n\t\t\t\tof
the following co-workers: [CEO, Senior Writer]. \n\t\t\t\tThe input to this
tool should be a pipe (|) separated text of length \n\t\t\t\tthree, representing
the role you want to ask it to, the question and \n\t\t\t\tinformation necessary.
For example, `coworker|question|information`.\n\n\nTo use a tool, please use
the exact following format:\n\n```\nThought: Do I need to use a tool? Yes\nAction:
the action to take, should be one of [Delegate Work to Co-Worker, Ask Question
to Co-Worker]\nAction Input: the input to the action\nObservation: the result
of the action\n```\n\nWhen you have a response for your task, or if you do not
need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use
a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis is the summary
of your work so far:\n \nBegin! This is VERY important to you, your job depends
on it!\n\nCurrent Task: Produce and amazing 1 paragraph draft of an article
about AI Agents.\nThought: Do I need to use a tool? Yes\nAction: Delegate Work
to Co-Worker\nAction Input: Senior Writer|Create a compelling and engaging 1
paragraph draft of an article about AI Agents|Provide a brief yet comprehensive
overview of AI agents, their uses, and implications in the current world. Make
sure to emphasize their potential and the role they can play in the future.
The tone should be informative but captivating. \nObservation: \"AI agents,
the digital masterminds at the heart of the 21st-century revolution, are shaping
a new era of intelligence and innovation. They are autonomous entities, capable
of observing their environment, making decisions, and acting on them, all in
pursuit of a specific goal. From streamlining operations in logistics to personalizing
customer experiences in retail, AI agents are transforming how businesses operate.
But their potential extends far beyond the corporate world. They are the sentinels
protecting our digital frontiers, the virtual assistants making our lives easier,
and the unseen hands guiding autonomous vehicles. As this technology evolves,
AI agents will play an increasingly central role in our world, ushering in an
era of unprecedented efficiency, personalization, and productivity. But with
great power comes great responsibility, and understanding and harnessing this
potential responsibly will be one of our greatest challenges and opportunities
in the coming years.\"\nThought: \n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"],
"stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '3352'
content-type:
- application/json
cookie:
- __cf_bm=o0Hi1R.X9SlINxIJTVmbndjXrZ0hKGumMHX9teXwypc-1703099776-1-AYizrWsw5e5xpAQYK2ILXGT8XFsMG/cUywCKEtgqcBAn361e23iU23y2rsxZge9SVmHfbz+ltf8zup2qIqhAfWM=;
_cfuvid=ps.JYe.5DT5QaG1hDuUb70tnVJo8IPWJrGrGEO_HUYA-1703099776177-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XwLixNfdsK3l1iSw7Uf11mrHwOwr\",\n \"object\":
\"chat.completion\",\n \"created\": 1703099810,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Do I need to use a tool? No\\nFinal Answer:
The Senior Writer has created a compelling and engaging 1 paragraph draft about
AI agents. The paragraph provides a brief yet comprehensive overview of AI agents,
their uses, and implications in the current world. It emphasizes their potential
and the role they can play in the future. The tone is informative but captivating,
meeting the objectives of the task.\"\n },\n \"logprobs\": null,\n
\ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
688,\n \"completion_tokens\": 80,\n \"total_tokens\": 768\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a38d99b590199-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 19:17:02 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '11599'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299200'
x-ratelimit-remaining-tokens_usage_based:
- '299200'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 160ms
x-ratelimit-reset-tokens_usage_based:
- 160ms
x-request-id:
- 91515805acf37358b0e3b73fa4b302ed
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: Produce
and amazing 1 paragraph draft of an article about AI Agents.\nAI: The Senior
Writer has created a compelling and engaging 1 paragraph draft about AI agents.
The paragraph provides a brief yet comprehensive overview of AI agents, their
uses, and implications in the current world. It emphasizes their potential and
the role they can play in the future. The tone is informative but captivating,
meeting the objectives of the task.\n\nNew summary:"}], "model": "gpt-4", "n":
1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1282'
content-type:
- application/json
cookie:
- __cf_bm=o0Hi1R.X9SlINxIJTVmbndjXrZ0hKGumMHX9teXwypc-1703099776-1-AYizrWsw5e5xpAQYK2ILXGT8XFsMG/cUywCKEtgqcBAn361e23iU23y2rsxZge9SVmHfbz+ltf8zup2qIqhAfWM=;
_cfuvid=ps.JYe.5DT5QaG1hDuUb70tnVJo8IPWJrGrGEO_HUYA-1703099776177-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.0
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.0
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8XwLutLT441lOLap9gUd0ttpfvq8b\",\n \"object\":
\"chat.completion\",\n \"created\": 1703099822,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to produce a draft
of an article about AI agents. The AI responds by creating a compelling and
engaging paragraph that provides a comprehensive overview of AI agents, their
uses, and implications in the current world, emphasizing their potential future
role.\"\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n
\ }\n ],\n \"usage\": {\n \"prompt_tokens\": 219,\n \"completion_tokens\":
51,\n \"total_tokens\": 270\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 838a39248aa10199-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Wed, 20 Dec 2023 19:17:10 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '7304'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299695'
x-ratelimit-remaining-tokens_usage_based:
- '299695'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 61ms
x-ratelimit-reset-tokens_usage_based:
- 61ms
x-request-id:
- 70b697c208659cf5af8ff46e2fc0ab69
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -0,0 +1,690 @@
interactions:
- request:
body: '{"messages": [{"role": "user", "content": "You are new test role.\nnew
test backstory\n\nYour personal goal is: new test goal\n\nTOOLS:\n------\nYou
have access to the following tools:\n\nmultiplier: multiplier(numbers) -> float
- Useful for when you need to multiply two numbers together.\n The input
to this tool should be a comma separated list of numbers of\n length
two, representing the two numbers you want to multiply together.\n For
example, `1,2` would be the input if you wanted to multiply 1 by 2.\n\nTo use
a tool, please use the exact following format:\n\n```\nThought: Do I need to
use a tool? Yes\nAction: the action to take, should be one of [multiplier],
just the name.\nAction Input: the input to the action\nObservation: the result
of the action\n```\n\nWhen you have a response for your task, or if you do not
need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use
a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis is the summary
of your work so far:\n \nBegin! This is VERY important to you, your job depends
on it!\n\nCurrent Task: What is 3 times 5?\n\n"}], "model": "gpt-4", "n": 1,
"stop": ["\nObservation"], "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1231'
content-type:
- application/json
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8b7eDhOwdMJw0817wIqiD9MoXVRU8\",\n \"object\":
\"chat.completion\",\n \"created\": 1703858225,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? Yes\\nAction:
multiplier\\nAction Input: 3,5\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 264,\n \"completion_tokens\":
23,\n \"total_tokens\": 287\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d28cd70f9f1cd9-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Fri, 29 Dec 2023 13:57:07 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=iNTKkM.TU1FqaOYqOtdlGljM5kh2eYMOQyBBsDxjV7o-1703858227-1-AUtPBBabQY5DO7jJdGlU5rhZeJigXNSYGJkA8uYAsRU5NSaEt+YcHCLzXRQWpzm+lHKeh5JKd9iq/sLM5ylFvc8=;
path=/; expires=Fri, 29-Dec-23 14:27:07 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=FKpE5gHVpQFRYsdYjjLPKhDX2CeCXpdvvJ8tjGmsYrM-1703858227679-0-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '1725'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299717'
x-ratelimit-remaining-tokens_usage_based:
- '299717'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 56ms
x-ratelimit-reset-tokens_usage_based:
- 56ms
x-request-id:
- 689757a1e38baf0844ec69f20525c5d7
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are new test role.\nnew
test backstory\n\nYour personal goal is: new test goal\n\nTOOLS:\n------\nYou
have access to the following tools:\n\nmultiplier: multiplier(numbers) -> float
- Useful for when you need to multiply two numbers together.\n The input
to this tool should be a comma separated list of numbers of\n length
two, representing the two numbers you want to multiply together.\n For
example, `1,2` would be the input if you wanted to multiply 1 by 2.\n\nTo use
a tool, please use the exact following format:\n\n```\nThought: Do I need to
use a tool? Yes\nAction: the action to take, should be one of [multiplier],
just the name.\nAction Input: the input to the action\nObservation: the result
of the action\n```\n\nWhen you have a response for your task, or if you do not
need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use
a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis is the summary
of your work so far:\n \nBegin! This is VERY important to you, your job depends
on it!\n\nCurrent Task: What is 3 times 5?\nThought: Do I need to use a tool?
Yes\nAction: multiplier\nAction Input: 3,5\nObservation: 15\nThought: \n"}],
"model": "gpt-4", "n": 1, "stop": ["\nObservation"], "stream": false, "temperature":
0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1335'
content-type:
- application/json
cookie:
- __cf_bm=iNTKkM.TU1FqaOYqOtdlGljM5kh2eYMOQyBBsDxjV7o-1703858227-1-AUtPBBabQY5DO7jJdGlU5rhZeJigXNSYGJkA8uYAsRU5NSaEt+YcHCLzXRQWpzm+lHKeh5JKd9iq/sLM5ylFvc8=;
_cfuvid=FKpE5gHVpQFRYsdYjjLPKhDX2CeCXpdvvJ8tjGmsYrM-1703858227679-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8b7eG2qnUr6SZcankL5AqkwIJvYFc\",\n \"object\":
\"chat.completion\",\n \"created\": 1703858228,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Do I need to use a tool? No\\nFinal Answer:
3 times 5 is 15.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 297,\n \"completion_tokens\":
22,\n \"total_tokens\": 319\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d28ce3ab3b1cd9-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Fri, 29 Dec 2023 13:57:09 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '1568'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299693'
x-ratelimit-remaining-tokens_usage_based:
- '299693'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 61ms
x-ratelimit-reset-tokens_usage_based:
- 61ms
x-request-id:
- 66a02e3e08e3f6b5b29fb04cd19f50a0
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\n\n\nNew lines of conversation:\nHuman: What
is 3 times 5?\nAI: 3 times 5 is 15.\n\nNew summary:"}], "model": "gpt-4", "n":
1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '886'
content-type:
- application/json
cookie:
- __cf_bm=iNTKkM.TU1FqaOYqOtdlGljM5kh2eYMOQyBBsDxjV7o-1703858227-1-AUtPBBabQY5DO7jJdGlU5rhZeJigXNSYGJkA8uYAsRU5NSaEt+YcHCLzXRQWpzm+lHKeh5JKd9iq/sLM5ylFvc8=;
_cfuvid=FKpE5gHVpQFRYsdYjjLPKhDX2CeCXpdvvJ8tjGmsYrM-1703858227679-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8b7eIfmBgQoWGLW4jiQZTu3qzEBBL\",\n \"object\":
\"chat.completion\",\n \"created\": 1703858230,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to calculate 3
times 5 and the AI responds that 3 times 5 is 15.\"\n },\n \"logprobs\":
null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\":
155,\n \"completion_tokens\": 26,\n \"total_tokens\": 181\n },\n \"system_fingerprint\":
null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d28cf118221cd9-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Fri, 29 Dec 2023 13:57:12 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2188'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299794'
x-ratelimit-remaining-tokens_usage_based:
- '299794'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 41ms
x-ratelimit-reset-tokens_usage_based:
- 41ms
x-request-id:
- a644c703d416b1e4b06586e96e6d7297
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are new test role.\nnew
test backstory\n\nYour personal goal is: new test goal\n\nTOOLS:\n------\nYou
have access to the following tools:\n\nmultiplier: multiplier(numbers) -> float
- Useful for when you need to multiply two numbers together.\n The input
to this tool should be a comma separated list of numbers of\n length
two, representing the two numbers you want to multiply together.\n For
example, `1,2` would be the input if you wanted to multiply 1 by 2.\n\nTo use
a tool, please use the exact following format:\n\n```\nThought: Do I need to
use a tool? Yes\nAction: the action to take, should be one of [multiplier],
just the name.\nAction Input: the input to the action\nObservation: the result
of the action\n```\n\nWhen you have a response for your task, or if you do not
need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use
a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis is the summary
of your work so far:\n The human asks the AI to calculate 3 times 5 and the
AI responds that 3 times 5 is 15.\nBegin! This is VERY important to you, your
job depends on it!\n\nCurrent Task: What is 3 times 5?\n\n"}], "model": "gpt-4",
"n": 1, "stop": ["\nObservation"], "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1317'
content-type:
- application/json
cookie:
- __cf_bm=iNTKkM.TU1FqaOYqOtdlGljM5kh2eYMOQyBBsDxjV7o-1703858227-1-AUtPBBabQY5DO7jJdGlU5rhZeJigXNSYGJkA8uYAsRU5NSaEt+YcHCLzXRQWpzm+lHKeh5JKd9iq/sLM5ylFvc8=;
_cfuvid=FKpE5gHVpQFRYsdYjjLPKhDX2CeCXpdvvJ8tjGmsYrM-1703858227679-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8b7eKehkNtTjrXJD0aFjiVUeXU7te\",\n \"object\":
\"chat.completion\",\n \"created\": 1703858232,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Thought: Do I need to use a tool? Yes\\nAction:
multiplier\\nAction Input: 3,5\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 290,\n \"completion_tokens\":
23,\n \"total_tokens\": 313\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d28d007f461cd9-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Fri, 29 Dec 2023 13:57:14 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '1885'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299697'
x-ratelimit-remaining-tokens_usage_based:
- '299697'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 60ms
x-ratelimit-reset-tokens_usage_based:
- 60ms
x-request-id:
- 87959bfa6a029f7bcafb5095e66d4964
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "You are new test role.\nnew
test backstory\n\nYour personal goal is: new test goal\n\nTOOLS:\n------\nYou
have access to the following tools:\n\nmultiplier: multiplier(numbers) -> float
- Useful for when you need to multiply two numbers together.\n The input
to this tool should be a comma separated list of numbers of\n length
two, representing the two numbers you want to multiply together.\n For
example, `1,2` would be the input if you wanted to multiply 1 by 2.\n\nTo use
a tool, please use the exact following format:\n\n```\nThought: Do I need to
use a tool? Yes\nAction: the action to take, should be one of [multiplier],
just the name.\nAction Input: the input to the action\nObservation: the result
of the action\n```\n\nWhen you have a response for your task, or if you do not
need to use a tool, you MUST use the format:\n\n```\nThought: Do I need to use
a tool? No\nFinal Answer: [your response here]\n```\n\t\tThis is the summary
of your work so far:\n The human asks the AI to calculate 3 times 5 and the
AI responds that 3 times 5 is 15.\nBegin! This is VERY important to you, your
job depends on it!\n\nCurrent Task: What is 3 times 5?\n\nI just used the multiplier
tool with input 3,5. So I already knwo the result of that.\nObservation: Invalid
or incomplete response\nThought: \n"}], "model": "gpt-4", "n": 1, "stop": ["\nObservation"],
"stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '1460'
content-type:
- application/json
cookie:
- __cf_bm=iNTKkM.TU1FqaOYqOtdlGljM5kh2eYMOQyBBsDxjV7o-1703858227-1-AUtPBBabQY5DO7jJdGlU5rhZeJigXNSYGJkA8uYAsRU5NSaEt+YcHCLzXRQWpzm+lHKeh5JKd9iq/sLM5ylFvc8=;
_cfuvid=FKpE5gHVpQFRYsdYjjLPKhDX2CeCXpdvvJ8tjGmsYrM-1703858227679-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8b7eME5fg1w8QcXUnl0FBcqxJWy7u\",\n \"object\":
\"chat.completion\",\n \"created\": 1703858234,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Do I need to use a tool? No\\nFinal Answer:
3 times 5 is 15.\"\n },\n \"logprobs\": null,\n \"finish_reason\":
\"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 324,\n \"completion_tokens\":
22,\n \"total_tokens\": 346\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d28d0fcfaf1cd9-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Fri, 29 Dec 2023 13:57:17 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2494'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299661'
x-ratelimit-remaining-tokens_usage_based:
- '299661'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 67ms
x-ratelimit-reset-tokens_usage_based:
- 67ms
x-request-id:
- eb9704531634d4cd3c6652dff09914bc
http_version: HTTP/1.1
status_code: 200
- request:
body: '{"messages": [{"role": "user", "content": "Progressively summarize the
lines of conversation provided, adding onto the previous summary returning a
new summary.\n\nEXAMPLE\nCurrent summary:\nThe human asks what the AI thinks
of artificial intelligence. The AI thinks artificial intelligence is a force
for good.\n\nNew lines of conversation:\nHuman: Why do you think artificial
intelligence is a force for good?\nAI: Because artificial intelligence will
help humans reach their full potential.\n\nNew summary:\nThe human asks what
the AI thinks of artificial intelligence. The AI thinks artificial intelligence
is a force for good because it will help humans reach their full potential.\nEND
OF EXAMPLE\n\nCurrent summary:\nThe human asks the AI to calculate 3 times 5
and the AI responds that 3 times 5 is 15.\n\nNew lines of conversation:\nHuman:
What is 3 times 5?\nAI: 3 times 5 is 15.\n\nNew summary:"}], "model": "gpt-4",
"n": 1, "stream": false, "temperature": 0.7}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- '972'
content-type:
- application/json
cookie:
- __cf_bm=iNTKkM.TU1FqaOYqOtdlGljM5kh2eYMOQyBBsDxjV7o-1703858227-1-AUtPBBabQY5DO7jJdGlU5rhZeJigXNSYGJkA8uYAsRU5NSaEt+YcHCLzXRQWpzm+lHKeh5JKd9iq/sLM5ylFvc8=;
_cfuvid=FKpE5gHVpQFRYsdYjjLPKhDX2CeCXpdvvJ8tjGmsYrM-1703858227679-0-604800000
host:
- api.openai.com
user-agent:
- OpenAI/Python 1.6.1
x-stainless-arch:
- arm64
x-stainless-async:
- 'false'
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 1.6.1
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.11.7
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
content: "{\n \"id\": \"chatcmpl-8b7eP77MzprkbgjaMbeaEob0aDx39\",\n \"object\":
\"chat.completion\",\n \"created\": 1703858237,\n \"model\": \"gpt-4-0613\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"The human asks the AI to calculate 3
times 5 twice, and both times the AI responds that 3 times 5 is 15.\"\n },\n
\ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n
\ \"usage\": {\n \"prompt_tokens\": 181,\n \"completion_tokens\": 30,\n
\ \"total_tokens\": 211\n },\n \"system_fingerprint\": null\n}\n"
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 83d28d211f591cd9-GRU
Cache-Control:
- no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Fri, 29 Dec 2023 13:57:20 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400
openai-model:
- gpt-4-0613
openai-organization:
- user-z7g4wmlazxqvc5wjyaaaocfz
openai-processing-ms:
- '2967'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '10000'
x-ratelimit-limit-tokens:
- '300000'
x-ratelimit-limit-tokens_usage_based:
- '300000'
x-ratelimit-remaining-requests:
- '9999'
x-ratelimit-remaining-tokens:
- '299771'
x-ratelimit-remaining-tokens_usage_based:
- '299771'
x-ratelimit-reset-requests:
- 6ms
x-ratelimit-reset-tokens:
- 45ms
x-ratelimit-reset-tokens_usage_based:
- 45ms
x-request-id:
- e3bbd11b2e9b28f76f8b43dc7a4d2b6d
http_version: HTTP/1.1
status_code: 200
version: 1

View File

@@ -1,3 +1,4 @@
# conftest.py
from dotenv import load_dotenv
load_result = load_dotenv(override=True)
load_result = load_dotenv(override=True)

View File

@@ -1,176 +1,268 @@
"""Test Agent creation and execution basic functionality."""
import json
import pytest
from ..crewai import Agent, Crew, Task, Process
from crewai.agent import Agent
from crewai.agents.cache import CacheHandler
from crewai.crew import Crew
from crewai.process import Process
from crewai.task import Task
ceo = Agent(
role="CEO",
goal="Make sure the writers in your company produce amazing content.",
backstory="You're an long time CEO of a content creation agency with a Senior Writer on the team. You're now working on a new project and want to make sure the content produced is amazing.",
allow_delegation=True
role="CEO",
goal="Make sure the writers in your company produce amazing content.",
backstory="You're an long time CEO of a content creation agency with a Senior Writer on the team. You're now working on a new project and want to make sure the content produced is amazing.",
allow_delegation=True,
)
researcher = Agent(
role="Researcher",
goal="Make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
allow_delegation=False
role="Researcher",
goal="Make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
allow_delegation=False,
)
writer = Agent(
role="Senior Writer",
goal="Write the best content about AI and AI agents.",
backstory="You're a senior writer, specialized in technology, software engineering, AI and startups. You work as a freelancer and are now working on writing content for a new customer.",
allow_delegation=False
role="Senior Writer",
goal="Write the best content about AI and AI agents.",
backstory="You're a senior writer, specialized in technology, software engineering, AI and startups. You work as a freelancer and are now working on writing content for a new customer.",
allow_delegation=False,
)
def test_crew_config_conditional_requirement():
with pytest.raises(ValueError):
Crew(process=Process.sequential)
config = json.dumps({
"agents": [
{
"role": "Senior Researcher",
"goal": "Make the best research and analysis on content about AI and AI agents",
"backstory": "You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer."
},
{
"role": "Senior Writer",
"goal": "Write the best content about AI and AI agents.",
"backstory": "You're a senior writer, specialized in technology, software engineering, AI and startups. You work as a freelancer and are now working on writing content for a new customer."
}
],
"tasks": [
{
"description": "Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
"agent": "Senior Researcher"
},
{
"description": "Write a 1 amazing paragraph highlight for each idead that showcases how good an article about this topic could be, check references if necessary or search for more content but make sure it's unique, interesting and well written. Return the list of ideas with their paragraph and your notes.",
"agent": "Senior Writer"
}
]
})
parsed_config = json.loads(config)
try:
crew = Crew(process=Process.sequential, config=config)
except ValueError:
pytest.fail("Unexpected ValidationError raised")
assert [agent.role for agent in crew.agents] == [agent['role'] for agent in parsed_config['agents']]
assert [task.description for task in crew.tasks] == [task['description'] for task in parsed_config['tasks']]
def test_crew_config_conditional_requirement():
with pytest.raises(ValueError):
Crew(process=Process.sequential)
config = json.dumps(
{
"agents": [
{
"role": "Senior Researcher",
"goal": "Make the best research and analysis on content about AI and AI agents",
"backstory": "You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
},
{
"role": "Senior Writer",
"goal": "Write the best content about AI and AI agents.",
"backstory": "You're a senior writer, specialized in technology, software engineering, AI and startups. You work as a freelancer and are now working on writing content for a new customer.",
},
],
"tasks": [
{
"description": "Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
"agent": "Senior Researcher",
},
{
"description": "Write a 1 amazing paragraph highlight for each idead that showcases how good an article about this topic could be, check references if necessary or search for more content but make sure it's unique, interesting and well written. Return the list of ideas with their paragraph and your notes.",
"agent": "Senior Writer",
},
],
}
)
parsed_config = json.loads(config)
try:
crew = Crew(process=Process.sequential, config=config)
except ValueError:
pytest.fail("Unexpected ValidationError raised")
assert [agent.role for agent in crew.agents] == [
agent["role"] for agent in parsed_config["agents"]
]
assert [task.description for task in crew.tasks] == [
task["description"] for task in parsed_config["tasks"]
]
def test_crew_config_with_wrong_keys():
no_tasks_config = json.dumps({
"agents": [
{
"role": "Senior Researcher",
"goal": "Make the best research and analysis on content about AI and AI agents",
"backstory": "You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer."
}
]
})
no_tasks_config = json.dumps(
{
"agents": [
{
"role": "Senior Researcher",
"goal": "Make the best research and analysis on content about AI and AI agents",
"backstory": "You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
}
]
}
)
no_agents_config = json.dumps({
"tasks": [
{
"description": "Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
"agent": "Senior Researcher"
}
]
})
with pytest.raises(ValueError):
Crew(process=Process.sequential, config='{"wrong_key": "wrong_value"}')
with pytest.raises(ValueError):
Crew(process=Process.sequential, config=no_tasks_config)
with pytest.raises(ValueError):
Crew(process=Process.sequential, config=no_agents_config)
no_agents_config = json.dumps(
{
"tasks": [
{
"description": "Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
"agent": "Senior Researcher",
}
]
}
)
with pytest.raises(ValueError):
Crew(process=Process.sequential, config='{"wrong_key": "wrong_value"}')
with pytest.raises(ValueError):
Crew(process=Process.sequential, config=no_tasks_config)
with pytest.raises(ValueError):
Crew(process=Process.sequential, config=no_agents_config)
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_crew_creation():
tasks = [
Task(
description="Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
agent=researcher
),
Task(
description="Write a 1 amazing paragraph highlight for each idea that showcases how good an article about this topic could be. Return the list of ideas with their paragraph and your notes.",
agent=writer
)
]
tasks = [
Task(
description="Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
agent=researcher,
),
Task(
description="Write a 1 amazing paragraph highlight for each idea that showcases how good an article about this topic could be. Return the list of ideas with their paragraph and your notes.",
agent=writer,
),
]
crew = Crew(
agents=[researcher, writer],
process=Process.sequential,
tasks=tasks,
)
crew = Crew(
agents=[researcher, writer],
process=Process.sequential,
tasks=tasks,
)
assert crew.kickoff() == """1. AI and Ethics: In a world that is increasingly being dominated by Artificial Intelligence, the question of ethics is ever more important. This article will delve into the complex intersection of AI and ethics, exploring how the decisions made by AI can impact society. From privacy concerns to the accountability of AI decisions, this piece will provide readers with a comprehensive understanding of the ethical dilemmas posed by AI.
assert (
crew.kickoff()
== """1. **The Evolution of AI: From Old Concepts to New Frontiers** - Journey with us as we traverse the fascinating timeline of artificial intelligence - from its philosophical and mathematical infancy to the sophisticated, problem-solving tool it has become today. This riveting account will not only educate but also inspire, as we delve deep into the milestones that brought us here and shine a beacon on the potential that lies ahead.
2. The Role of AI in Climate Change: Climate change is the defining issue of our time. This article will examine how AI is playing a pivotal role in combating this global challenge. From predicting climate patterns to optimizing renewable energy use, the piece will highlight how AI is not just a part of the problem, but also a crucial part of the solution.
2. **AI Agents in Healthcare: The Future of Medicine** - Imagine a world where illnesses are diagnosed before symptoms appear, where patient outcomes are not mere guesses but accurate predictions. This is the world AI is crafting in healthcare - a revolution that's saving lives and changing the face of medicine as we know it. This article will spotlight this transformative journey, underlining the profound impact AI is having on our health and well-being.
3. AI in Healthcare: The fusion of AI and healthcare holds a transformative potential. This article will explore how AI is revolutionizing healthcare, from improving diagnosis and treatment to enhancing patient care and hospital management. It will show how AI is not just improving healthcare outcomes but also driving a more efficient and patient-centered healthcare system.
3. **AI and Ethics: Navigating the Moral Landscape of Artificial Intelligence** - As AI becomes an integral part of our lives, it brings along a plethora of ethical dilemmas. This thought-provoking piece will navigate the complex moral landscape of AI, addressing critical concerns like privacy, job displacement, and decision-making biases. It serves as a much-needed discussion platform for the societal implications of AI, urging us to look beyond the technology and into the mirror.
4. The Future of AI and Work: The rise of AI has sparked a lively debate on its impact on jobs and the future of work. This article will explore this topic in-depth, examining both the potential job losses and the new opportunities created by AI. It will provide a balanced and insightful analysis of how AI is reshaping the world of work.
4. **Demystifying AI Algorithms: A Deep Dive into Machine Learning** - Ever wondered what goes on behind the scenes of AI? This enlightening article will break down the complex world of machine learning algorithms into digestible insights, unraveling the mystery of AI's 'black box'. It's a rare opportunity for the non-technical audience to appreciate the inner workings of AI, fostering a deeper understanding of this revolutionary technology.
5. AI in Space Exploration: The final frontier is not beyond the reach of AI. This article will spotlight the role of AI in space exploration, from analyzing vast amounts of astronomical data to autonomous spacecraft navigating the vast expanse of space. The piece will highlight how AI is not just aiding but also accelerating our quest to explore the universe."""
5. **AI Startups: The Game Changers of the Tech Industry** - In the world of tech, AI startups are the bold pioneers charting new territories. This article will spotlight these game changers, showcasing how their innovative products and services are driving the AI revolution. It's a unique opportunity to catch a glimpse of the entrepreneurial side of AI, offering inspiration for the tech enthusiasts and dreamers alike."""
)
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_crew_with_delegating_agents():
tasks = [
Task(
description="Produce and amazing 1 paragraph draft of an article about AI Agents.",
agent=ceo
)
]
tasks = [
Task(
description="Produce and amazing 1 paragraph draft of an article about AI Agents.",
agent=ceo,
)
]
crew = Crew(
agents=[ceo, writer],
process=Process.sequential,
tasks=tasks,
)
crew = Crew(
agents=[ceo, writer],
process=Process.sequential,
tasks=tasks,
)
assert crew.kickoff() == 'The Senior Writer produced an amazing paragraph about AI Agents: "Artificial Intelligence (AI) agents, the cutting-edge technology that is reshaping the digital landscape, are software entities that autonomously perform tasks to achieve specific goals. These agents, programmed to make decisions based on their environment, are the driving force behind a multitude of innovations, from self-driving cars to personalized recommendations in e-commerce. They are pushing boundaries in various sectors, mitigating human error, increasing efficiency, and revolutionizing customer experience. The importance of AI agents is underscored by their ability to adapt and learn, ushering in a new era of technology where machines can mimic, and often surpass, human intelligence. Understanding AI agents is akin to peering into the future, a future where technology is seamless, intuitive, and astoundingly smart."'
assert (
crew.kickoff()
== '"AI agents, the digital masterminds at the heart of the 21st-century revolution, are shaping a new era of intelligence and innovation. They are autonomous entities, capable of observing their environment, making decisions, and acting on them, all in pursuit of a specific goal. From streamlining operations in logistics to personalizing customer experiences in retail, AI agents are transforming how businesses operate. But their potential extends far beyond the corporate world. They are the sentinels protecting our digital frontiers, the virtual assistants making our lives easier, and the unseen hands guiding autonomous vehicles. As this technology evolves, AI agents will play an increasingly central role in our world, ushering in an era of unprecedented efficiency, personalization, and productivity. But with great power comes great responsibility, and understanding and harnessing this potential responsibly will be one of our greatest challenges and opportunities in the coming years."'
)
@pytest.mark.vcr()
@pytest.mark.vcr(filter_headers=["authorization"])
def test_crew_verbose_output(capsys):
tasks = [
Task(
description="Research AI advancements.",
agent=researcher
),
Task(
description="Write about AI in healthcare.",
agent=writer
)
]
tasks = [
Task(description="Research AI advancements.", agent=researcher),
Task(description="Write about AI in healthcare.", agent=writer),
]
crew = Crew(
agents=[researcher, writer],
tasks=tasks,
process=Process.sequential,
verbose=True
)
crew = Crew(
agents=[researcher, writer],
tasks=tasks,
process=Process.sequential,
verbose=True,
)
crew.kickoff()
captured = capsys.readouterr()
expected_strings = [
"Working Agent: Researcher",
"Starting Task: Research AI advancements. ...",
"Task output:",
"Working Agent: Senior Writer",
"Starting Task: Write about AI in healthcare. ...",
"Task output:"
]
crew.kickoff()
captured = capsys.readouterr()
expected_strings = [
"Working Agent: Researcher",
"Starting Task: Research AI advancements.",
"[Researcher] Task output:",
"Working Agent: Senior Writer",
"Starting Task: Write about AI in healthcare.",
"[Senior Writer] Task output:",
]
for expected_string in expected_strings:
assert expected_string in captured.out
for expected_string in expected_strings:
assert expected_string in captured.out
# Now test with verbose set to False
crew.verbose = False
crew.kickoff()
captured = capsys.readouterr()
assert captured.out == ""
# Now test with verbose set to False
crew.verbose = False
crew.kickoff()
captured = capsys.readouterr()
assert captured.out == ""
@pytest.mark.vcr(filter_headers=["authorization"])
def test_crew_verbose_levels_output(capsys):
tasks = [Task(description="Write about AI advancements.", agent=researcher)]
crew = Crew(agents=[researcher], tasks=tasks, process=Process.sequential, verbose=1)
crew.kickoff()
captured = capsys.readouterr()
expected_strings = ["Working Agent: Researcher", "[Researcher] Task output:"]
for expected_string in expected_strings:
assert expected_string in captured.out
# Now test with verbose set to 2
crew.verbose = 2
crew.kickoff()
captured = capsys.readouterr()
expected_strings = [
"Working Agent: Researcher",
"Starting Task: Write about AI advancements.",
"[Researcher] Task output:",
]
for expected_string in expected_strings:
assert expected_string in captured.out
@pytest.mark.vcr(filter_headers=["authorization"])
def test_cache_hitting_between_agents():
from unittest.mock import patch
from langchain.tools import tool
@tool
def multiplier(numbers) -> float:
"""Useful for when you need to multiply two numbers together.
The input to this tool should be a comma separated list of numbers of
length two, representing the two numbers you want to multiply together.
For example, `1,2` would be the input if you wanted to multiply 1 by 2."""
a, b = numbers.split(",")
return int(a) * int(b)
tasks = [
Task(
description="What is 2 tims 6? Return only the number.",
tools=[multiplier],
agent=ceo,
),
Task(
description="What is 2 times 6? Return only the number.",
tools=[multiplier],
agent=researcher,
),
]
crew = Crew(
agents=[ceo, researcher],
tasks=tasks,
)
assert crew.cache_handler._cache == {}
output = crew.kickoff()
assert crew.cache_handler._cache == {"multiplier-2,6": "12"}
assert output == "12"
with patch.object(CacheHandler, "read") as read:
read.return_value = "12"
crew.kickoff()
read.assert_called_with("multiplier", "2,6")

View File

@@ -1,57 +1,57 @@
"""Test Agent creation and execution basic functionality."""
import pytest
from ..crewai import Agent, Task
from crewai.agent import Agent
from crewai.task import Task
def test_task_tool_reflect_agent_tools():
from langchain.tools import tool
from langchain.tools import tool
@tool
def fake_tool() -> None:
"Fake tool"
pass
researcher = Agent(
role="Researcher",
goal="Make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
tools=[fake_tool],
allow_delegation=False
)
@tool
def fake_tool() -> None:
"Fake tool"
researcher = Agent(
role="Researcher",
goal="Make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
tools=[fake_tool],
allow_delegation=False,
)
task = Task(
description="Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
agent=researcher,
)
assert task.tools == [fake_tool]
task = Task(
description="Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
agent=researcher
)
assert task.tools == [fake_tool]
def test_task_tool_takes_precedence_ove_agent_tools():
from langchain.tools import tool
from langchain.tools import tool
@tool
def fake_tool() -> None:
"Fake tool"
pass
@tool
def fake_tool() -> None:
"Fake tool"
@tool
def fake_task_tool() -> None:
"Fake tool"
pass
researcher = Agent(
role="Researcher",
goal="Make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
tools=[fake_tool],
allow_delegation=False
)
@tool
def fake_task_tool() -> None:
"Fake tool"
task = Task(
description="Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
agent=researcher,
tools=[fake_task_tool],
allow_delegation=False
)
assert task.tools == [fake_task_tool]
researcher = Agent(
role="Researcher",
goal="Make the best research and analysis on content about AI and AI agents",
backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
tools=[fake_tool],
allow_delegation=False,
)
task = Task(
description="Give me a list of 5 interesting ideas to explore for na article, what makes them unique and interesting.",
agent=researcher,
tools=[fake_task_tool],
allow_delegation=False,
)
assert task.tools == [fake_task_tool]