mirror of
https://github.com/cpacker/MemGPT.git
synced 2025-06-03 04:30:22 +00:00
74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
import json
|
||
import uuid
|
||
|
||
from letta import create_client
|
||
from letta.schemas.memory import ChatMemory
|
||
from letta.schemas.tool import Tool
|
||
|
||
"""
|
||
This example show how you can add CrewAI tools .
|
||
|
||
First, make sure you have CrewAI and some of the extras downloaded.
|
||
```
|
||
poetry install --extras "external-tools"
|
||
```
|
||
then setup letta with `letta configure`.
|
||
"""
|
||
|
||
|
||
def main():
|
||
from crewai_tools import ScrapeWebsiteTool
|
||
|
||
crewai_tool = ScrapeWebsiteTool(website_url="https://www.example.com")
|
||
|
||
example_website_scrape_tool = Tool.from_crewai(crewai_tool)
|
||
tool_name = example_website_scrape_tool.name
|
||
|
||
# Create a `LocalClient` (you can also use a `RESTClient`, see the letta_rest_client.py example)
|
||
client = create_client()
|
||
|
||
# create tool
|
||
client.add_tool(example_website_scrape_tool)
|
||
|
||
# Confirm that the tool is in
|
||
tools = client.list_tools()
|
||
assert example_website_scrape_tool.name in [t.name for t in tools]
|
||
|
||
# Generate uuid for agent name for this example
|
||
namespace = uuid.NAMESPACE_DNS
|
||
agent_uuid = str(uuid.uuid5(namespace, "letta-crewai-tooling-example"))
|
||
|
||
# Clear all agents
|
||
for agent_state in client.list_agents():
|
||
if agent_state.name == agent_uuid:
|
||
client.delete_agent(agent_id=agent_state.id)
|
||
print(f"Deleted agent: {agent_state.name} with ID {str(agent_state.id)}")
|
||
|
||
# google search persona
|
||
persona = f"""
|
||
|
||
My name is Letta.
|
||
|
||
I am a personal assistant who answers a user's questions about a website `example.com`. When a user asks me a question about `example.com`, I will use a tool called {tool_name} which will search `example.com` and answer the relevant question.
|
||
|
||
Don’t forget - inner monologue / inner thoughts should always be different than the contents of send_message! send_message is how you communicate with the user, whereas inner thoughts are your own personal inner thoughts.
|
||
"""
|
||
|
||
# Create an agent
|
||
agent_state = client.create_agent(name=agent_uuid, memory=ChatMemory(human="My name is Matt.", persona=persona), tools=[tool_name])
|
||
print(f"Created agent: {agent_state.name} with ID {str(agent_state.id)}")
|
||
|
||
# Send a message to the agent
|
||
send_message_response = client.user_message(agent_id=agent_state.id, message="What's on the example.com website?")
|
||
for message in send_message_response.messages:
|
||
response_json = json.dumps(message.model_dump(), indent=4)
|
||
print(f"{response_json}\n")
|
||
|
||
# Delete agent
|
||
client.delete_agent(agent_id=agent_state.id)
|
||
print(f"Deleted agent: {agent_state.name} with ID {str(agent_state.id)}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|