A package to interact with generative AI and build specialized generative AI workflows. This project is dual-licensed under AGPL-3.0 and a separate commercial license.
Project description
OpenBrain
🚧 Under active development. Not ready for use. 🚧
OpenBrain is a chat platform backed by Large Language Model (LLM) agents. It provides APIs and tools to configure, store, and retrieve chat agents, making your chat sessions more versatile and context-aware.
OpenBrain agents are stateless, so they can remember things about you and your conversation. They can also use tools, so you can use the same agent to chat and to perform actions.
Interactions with the agent can be injected into any application easily by constructing a query, choosing an agent configuration, and pre-processing your data through that agent before sending it of for further processing.
Features
- Interactive Agent Tuner: A GUI to modify and test agent configurations.
- Command-Line Interface: Use
ob
for quick completions andob-chat
for an interactive session. - Flexible Configuration: Customizable agents through DynamoDB backed ORM.
- Event-Driven Architecture: Extensible through cloud-based event handling.
Quick Start
Installation
pip install openbrain
Setup .env file
cp .env.example .env # Edit this file with your own values
Deploy Supporting Infrastructure
python ci_cd.py -I
Using OpenBrain
OpenBrain Gradio Tuner
To facilitate tuning agent parameters and experimenting with prompts, OpenBrain provides a GUI interface using Gradio. To launch the GUI.
$ ob-tuner
Running on local URL: http://0.0.0.0:7861
To create a public link, set `share=True` in `launch()`.
Tip: You can show or hide the button for flagging with the `allow_flagging=` kwarg; for example: gr.Interface(..., allow_flagging=False)
Command Line Completions
$ ob "What is the air speed velocity of an unladen swallow?" -v
> Entering new AgentExecutor chain...
Ah, the famous question about the air speed velocity of an unladen swallow. Are you referring to an African or European swallow?
> Finished chain.
Ah, the famous question about the air speed velocity of an unladen swallow. Are you referring to an African or European swallow?
Command Line Interactive Session
$ ob-chat
---------- Begin Chat Session ----------
> OpenBrain: What… is your name?
User: It is Arthur – King of the Britons.
> OpenBrain: What… is your quest?
User: To seek the Holy Grail.
> OpenBrain: What… is the air-speed velocity of an unladen swallow?
User: What do you mean? An African or a European swallow?
> OpenBrain: I don’t know that. Aaaaaaaaagh!
Architecture Overview
Data Model
classDiagram
class ChatMessage {
User provided*
+ str: sessionId
+ str: clientId
+ str: message
+ AgentConfig: agentConfigOverrides
+ str: agentConfig
+ bool: reset
}
class AgentConfig {
+ str: profileName
+ str: clientId
+ str: iceBreaker
+ Decimal: temperature
+ ...
+ save()
+ refresh()
+ load()
+ delete()
+ get_all()
}
class ChatSession {
+ str: sessionId
+ str: clientId
+ byte: agentMemory
+ AgentConfig: agentConfig
+ Lead: lead
+ save()
+ load()
}
class Lead {
+ str: sessionId
+ str: clientId
+ str: fullName
+ str: firstName
+ str: middleName
+ str: lastName
+ List[str]: medications
+ str: email
+ ...
+ save()
+ refresh()
+ delete()
+ load()
+ get_all()
}
ChatSession "1" *-- "1" Lead: contains
ChatSession "1" *-- "1" AgentConfig: contains
%% ChatMessage "1" *-- "1" AgentConfig: contains
%% ChatSession "1" *-- "*" ChatMessage: contains
ChatSession "1" *-- "1" langchain_ChatMemory: from langchain, serialized
Data Flow diagram
OpenBrain uses an event driven architecture. The agent sends events to event bus and then the developer can simply write rules and targets for the incoming events once the targets are ready. The following diagram shows the data flow in two parts.
- The user interaction with the agent and the agent interaction with an event bus.
- The event bus and the targets that are triggered by the events.
sequenceDiagram
title Agent Data Flow
participant User
create participant GPT Agent
participant AgentConfigTable
participant OpenAI
participant Tool
participant EventBus
User ->> GPT Agent: (AgentConfig, AgentMemory), ChatMessage
GPT Agent -->> AgentConfigTable: profileName
AgentConfigTable -->> GPT Agent: AgentConfig
GPT Agent -->> OpenAI: ChatMessage
OpenAI -->> GPT Agent: ChatMessage
GPT Agent -->> Tool: Tool(Object, clientId)
Tool -->> EventBus: (Object, clientId, session_id, object_id)
Tool -->> GPT Agent: ChatMessage
destroy GPT Agent
GPT Agent ->> User: ChatMessage, (AgentConfig, AgentMemory), Object
box blue Databases
participant AgentConfigTable
end
box purple Tool
participant Tool
end
box gray EventBus
participant EventBus
end
box red Provider
participant OpenAI
end
sequenceDiagram
title Agent Data Flow
participant SQS
participant EventBus
participant Lambda
participant ObjectTable
participant AgentConfigTable
participant ChatHistoryTable
participant ExternalSite
EventBus ->> Lambda: (Object, clientId, sessionId, objectId)
Lambda -->> ObjectTable: (clientId, objectId)
ObjectTable -->> Lambda: Object
Lambda -->> AgentConfigTable: (profileName, clientId)
ChatHistoryTable -->> Lambda: AgentConfig
Lambda --> ChatHistoryTable: (clientId, sessionId)
ChatHistoryTable -->> Lambda: (AgentMemory, AgentConfig)
Lambda ->> ExternalSite: ...
ExternalSite --x Lambda: ERROR
Lambda ->> SQS: <DETAILS NEEDED TO RETRY>
ExternalSite ->> Lambda: ...
Lambda -> EventBus: <POTENTIAL NEW EVENT>
box maroon DeadLetterQueue
participant SQS
end
box blue Databases
participant ObjectTable
participant AgentConfigTable
participant ChatHistoryTable
end
box gray EventBus
participant EventBus
end
box brown EventTargets
participant Lambda
end
box green Internet
participant ExternalSite
end
Contributing
See CONTRIBUTING.md for guidelines.
License
- Open Source: AGPLv3
- Commercial: See COMMERCIAL_LICENSE and contact us for inquiries.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file openbrain-0.13.0.tar.gz
.
File metadata
- Download URL: openbrain-0.13.0.tar.gz
- Upload date:
- Size: 36.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.10.13 Linux/6.2.0-1012-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de0c6b79025e5a7bab2e1c2b38e34e0f2c972370cd5808689cc10e7676474da9 |
|
MD5 | 7ac0e15ae430d65d9b01344343fa3488 |
|
BLAKE2b-256 | b4dc74847f4c19ee51566dbf172b1dbe7c1de34124e4dd85f5613a746c082e12 |
File details
Details for the file openbrain-0.13.0-py3-none-any.whl
.
File metadata
- Download URL: openbrain-0.13.0-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.10.13 Linux/6.2.0-1012-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0c0437c64a112450a82e3d8c138d9f87e6a90c7fb57c929cbbefb3b46b1a6a8 |
|
MD5 | 61580e32a8640d6c9c3d3a1a17ea314c |
|
BLAKE2b-256 | ccab2c039ee7fea9bc98aef883c7fa3fdb4b165de5af21701d36d6815b0b4ffe |