Eidolon helps developers designing and deploying agent-based services.
With Eidolon, agents are services, so there is no extra work when it comes time to deploy. The HTTP server is built in.
Since agents are services with well-defined interfaces, they easily communicate with tools dynamically generated from the openapi json schema defined by the agent services.
With a focus on modularity, Eidolon makes it easy to swap out components. Grab an off the shelf llm, rag impl, tools, etc or just define your own.
This means no vendor lock-in and minimizes the work needed to upgrade portions of an agent. Without this flexibility, developers will not be able to adapt their agents to the rapidly changing AI landscape.
Deploy a Chatbot: Help Swifties learn about Kelce
- Python 3.11
- OpenAI api key: You should have an envar OPENAI_API_KEY set to your OpenAI api key.
First, you need to install the Eidolon SDK. Open your terminal and run the following command:
pip install eidolon-ai-sdk
Now it is time to create your first AgentProgram. Create a directory and add a yaml file to describe your resource.
mkdir hello_world
vim hello_world/hello_world_agent.yaml
apiVersion: eidolon/v1
kind: Agent
metadata:
name: hello_world
spec:
description: "This is an example of a generic agent which greets people by name."
system_prompt: "You are a friendly greeter who greets people by name while using emojis"
actions:
- user_prompt: "Hi, my name is {{name}}"
🚨 Don't have access to OpenAI GPT4?
By default we use gpt4, but you can change the model to gpt-3.5-turbo if you don't have access to gpt4 by customizing the "cpu" within your agent's spec.
spec:
cpu:
llm_unit:
model: "gpt-3.5-turbo"
Finally, open a new terminal window and run your machine using eidolon-server.
eidolon-server -m local_dev hello_world
🚨 Getting command not found: eidolon-server
? Open a new terminal window and try the command again.
-m local_dev
option specifies using the local_dev
builtin Machine resource. This machine uses in-memory symbolic memory rather than mongo, so state will disappear between server restarts.
First create a process for your conversation.
curl -X 'POST' 'http://localhost:8080/processes' -H 'Content-Type: application/json' -d '{
"agent": "hello_world",
"title": "quickstart"
}'
The result should be a json object with a process id. For example:
{
"agent": "hello_world",
"process_id": "65fa0f7b51854d2cb9403aec",
...
}
Now let's try to make a request to your server.
curl -X POST http://0.0.0.0:8080/processes/{process_id}/agent/hello_world/actions/converse -H 'Content-Type: application/json' -d '{"name": "World"}'; echo
Replace {process_id}
with the process id you received from the previous command.
You should now see something like Hello, World! 🌍👋
And that's it! You have successfully set up and used a basic project using the Eidolon SDK. To see more endpoints on your agent machine, visit the swagger ui.
For full documentation, visit www.eidolonai.com.
We welcome and appreciate contributions!
Reach out to us on discord if you have any questions or suggestions.
If you need help with the mechanics of contributing, check out the First Contributions Repository.