Skip to main content

A Python package for creating simple AI Agents using the OpenAI API.

Project description

jAIms

My name is Bot, jAIMs Bot. 🕶️

jAIms is a lightweight Python framework built on top of the OpenAI library that lets you create powerful LLM agents. It is designed with simplicity and ease of use in mind and only depends on openai, tiktoken and Pillow.

Installation

pip install jaims-py

👨‍💻 Usage

Building an agent is as simple as this:

from jaims import JAImsAgent

agent = JAImsAgent()

response = agent.run([
    {
        "role": "user",
        "content": "Hi!"
    }
])

print(response)

⚙️ Functions

Of course, an agent is just a chatbot if it doesn't support functions. jAIms uses the built-in OpenAI tools feature to call the functions you pass to it. Here's an example where we create a simple sum function and make a simple agent that lets you sum two numbers:

import jaims


def sum(a: int, b: int):
    return a + b

# this is a class that wraps your function, it will 
# receive the actual function plus all the info required 
# by the llm to invoke it.
func_wrapper = JAImsFuncWrapper(
    function=sum, 
    name="sum", 
    description="use this function when the user wants to sum two numbers",
    params_descriptors=[
        JAImsParamDescriptor(
            name="a",
            description="first operand",
            json_type=JAImsJsonSchemaType.NUMBER,
        ),
        JAImsParamDescriptor(
            name="b",
            description="second operand",
            json_type=JAImsJsonSchemaType.NUMBER,
        ),
    ],
)

# instantiate the agent passing the functions
agent = JAImsAgent(
        openai_kwargs=JAImsOpenaiKWArgs(
            model=JAImsGPTModel.GPT_4,
            tools=[
                func_wrapper,
            ],
        ),
    )
# a simple loop that simulates a chatbot
while True:
    user_input = input("> ")
    if user_input == "exit":
        break
    response = agent.run(
        [{"role": "user", "content": user_input}],
    )

    for chunk in response:
        print(chunk, end="", flush=True)
        
        print("\n")

✨ Other features

  • Complete control over openai call parameters.
  • Automatic chat history management
  • Configuration of the OpenAI model to use
  • Injectable prompt to shape agent behavior
  • Safety checks to prevent the agent from endlessly looping over function calls

I will routinely update the examples to demonstrate more advanced features. Also, I've made sure to document the code as best as I can; everything should be self-explanatory; I plan to add a proper documentation in the future if this project gets enough traction.

🤖 Supported models

Currently, jAIms supports the new OpenAI models with functions enabled, specifically:

  • gpt-3.5-turbo-0613
  • gpt-3.5-turbo-16k-0613
  • gpt-4-0613
  • gpt-4-32k-0613
  • gpt-4-1106-preview
  • gpt-4-vision-preview

I'm not planning to add support for non-OpenAI models at the moment, but contributions are always appreciated.

⚠️ Project status

This is a work in progress. I still need to write some tests and add many features, but the core functionality is there. I'm creating this framework because I need a lightweight and easy-to-use framework to create LLM agents. This project may not be as advanced as tools like langchain and others, but if you need a simple tool to create agents based on the OpenAI API, you might find jAIms useful.

TODOS:

  • Add tests
  • Add more examples
  • Add more chat history optimization strategies
  • Add function calling callbacks
  • Add history persistance

📝 License

The license will be MIT, but I need to add this properly.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jaims_py-2.0.0b1.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

jaims_py-2.0.0b1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file jaims_py-2.0.0b1.tar.gz.

File metadata

  • Download URL: jaims_py-2.0.0b1.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.0

File hashes

Hashes for jaims_py-2.0.0b1.tar.gz
Algorithm Hash digest
SHA256 7d5a3b82c59670738903b5bd1499c1fe20a5ce1f8817d8b6984bda63dc802512
MD5 17ba167d5be9e317c4b3477a5b8af21d
BLAKE2b-256 3c159ec2191387af627af3989a85e4e7cd2f5182be1b21b54b1e08066c816eb9

See more details on using hashes here.

File details

Details for the file jaims_py-2.0.0b1-py3-none-any.whl.

File metadata

  • Download URL: jaims_py-2.0.0b1-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.0

File hashes

Hashes for jaims_py-2.0.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 638c2285a57bc39abaa85cf6d941b7a1fb1ea26909330b149035dee60dfdc07e
MD5 c5fa5ff618041a64f41237100c0b747f
BLAKE2b-256 84a5314045134cb1e04d929d4d2bab0a1b2c0b2a5041e2c392df5546a1baedff

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page