Research, Coding and Planning agents used by Sirji.
Project description
Sirji is an Open Source AI Software Development Agent.
Built with ❤️ by True Sparrow
Sirji Agents
sirji-agents
is a PyPI package that implements three key agents for Sirji:
- Coding Agent
- Planning Agent
- Research Agent
It Utilizes:
- OpenAI Chat Completions API
- OpenAI Assistants API
This package communicates with models and RAG assistants.
Installation
Setup Virtual Environment
We recommend setting up a virtual environment to isolate Python dependencies, ensuring project-specific packages without conflicting with system-wide installations.
python3 -m venv venv
source venv/bin/activate
Install Package
Install the package from PyPi:
pip install sirji-agents
Run the following command to install playwright:
playwright install
Usage
Environment Variables
Ensure that following environment variables are set:
export SIRJI_WORKSPACE="Absolute folder path for Sirji to use as it's workspace. Note that a .sirji folder will be created inside it."
export SIRJI_RUN_ID='Unique alphanumeric ID for each run. Note that a sub folder named by this ID will be created inside of .sirji folder to store logs, etc.'
export SIRJI_OPENAI_API_KEY='OpenAI API key for Chat Completions API and Assistants API'
export SIRJI_MODEL_PROVIDER='Model Provider to be used for LLM inference. Defaults to "openai"'
export SIRJI_MODEL='Model to be used for LLM inference. Defaults to "gpt-4-turbo"'
export SIRJI_MODEL_PROVIDER_API_KEY='API key to be use for LLM inference'
Research Agent
Initialization
from sirji_agents import ResearchAgent
# Initialize Researcher without assistant ID
researcher = ResearchAgent('openai_assistant', 'openai_assistant')
# init_payload fetched from researcher object should be persisted
init_payload = researcher.init_payload
# Initialize Researcher with assistant ID
researcher = ResearchAgent('openai_assistant', 'openai_assistant', init_payload)
Some example message handling usages are given below.
Train using URL
from sirji_messages import MessageFactory, ActionEnum
message_class = MessageFactory[ActionEnum.TRAIN_USING_URL.name]
message_str = message_class().generate({"url": "https://finance.yahoo.com/quote/API/"})
researcher.message(message_str)
Infer
from sirji_messages import MessageFactory, ActionEnum
message_class = MessageFactory[ActionEnum.INFER.name]
message_str = message_class().generate({"details": "How to use yahoo finance api?"})
response, total_tokens = researcher.message(message_str)
Coding Agent
from sirji_agents import CodingAgent
# Initialize Coding Agent
coder = CodingAgent()
# Construct a message for problem statement
from sirji_messages import MessageFactory, ActionEnum
message_class = MessageFactory[ActionEnum.PROBLEM_STATEMENT.name]
message_str = message_class().generate({"details": "Create a python executable file to find out the factorial of a number"})
# At the beginning, history is empty
coder_history = []
# call the Coder and update the history variable
response_message, coder_history, prompt_tokens, completion_tokens = coder.message(message_str, coder_history)
# Now in the new history:
# coder_history[0] is the system prompt
# coder_history[1] is the message from User to Coder passing the problem statement
# coder_history[2] is the response from the LLM inference
# Persist the history variable for future use.
Planning Agent
from sirji_agents import PlanningAgent
# Initialize Planning Agent
planner = PlanningAgent()
# Construct a message for generate steps message
from sirji_messages import MessageFactory, ActionEnum
message_class = MessageFactory[ActionEnum.GENERATE_STEPS.name]
message_str = message_class().generate({"details": "Create a python executable file to find out the factorial of a number"})
# In the actual flow, this message_str will be obtained as a response from Coder.
# At the beginning, history is empty
planner_history = []
# call the Planner and update the history variable
response_message, planner_history, prompt_tokens, completion_tokens = planner.message(message_str, planner_history)
For Contributors
- Fork and clone the repository.
- Create and activate the virtual environment as described above.
- Set the environment variables as described above.
- Install the package in editable mode by running the following command from repository root:
pip install -e .
- Run the following command to install playwright:
playwright install
Running Tests and Coverage Analysis
TODO
License
Distributed under the MIT License. See LICENSE
for more information.
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
Hashes for sirji_agents-0.0.21-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb701aa87e29d1a6a4042267eafffb8c04a4de9b14f11cf9a9588e14e0324d33 |
|
MD5 | f62497ab73528804db9aea7c8790a5ef |
|
BLAKE2b-256 | 1ff8afa2a800c015e7b310abbd28fec9e80c64bcfa17fa0b0038e9e2d1806852 |