Skip to main content

AGI.green Framework

Project description

AGI.green Framework

A modern Python framework for building AI-powered asynchonous chat applications with a browser interface, featuring markdown content rendering and a unified messaging system.

Application can be built entirely in Python or can integrate with arbitrary external services. This differs from conventional full stack solutions with a javascript frontend application making API calls to a Python backend. Instead, the frontend is a slave and the backend is the application.

Features

  • Unified Message Protocol: Consistent message handling across different communication channels
  • Rich Content Support:
    • Markdown rendering
    • Mermaid diagrams
    • MathJax equations
    • Code syntax highlighting
    • YAML forms implementing Vueform
  • Flexible Architecture:
    • WebSocket-based real-time communication
    • Message Queue (AMQP) integration for distributed systems - rabbitmq|ABS|inprocess
    • Extensible protocol system - asynchronous interaction with anything
  • AI Integration:
    • OpenAI API support
    • Anthropic Claude support
    • Custom model integration capability
  • Asynchronous Execution:
    • Non limited to call and response
    • Can add chat messages in response to arbitrary events, e.g. incoming email or SMS or task completion
    • Can execute arbitrary code in response to a message or other events
    • No javascript required on the frontend!
  • Vue Forms in Markdown (chat and docs):
    • Support for YAML and JSON forms in markdown
    • Support for forms in chat messages
    • Support for forms in documents
    • Asynchronous form data events with no javascript required on the frontend (python only)
    • That means no need to write any javascript to use forms!

Quick Start

  1. Install dependencies:
# Install RabbitMQ
sudo apt-get install rabbitmq-server  # Ubuntu/Debian
brew install rabbitmq                 # macOS

# Install package
pip install agi.green
  1. Create a basic chat application:
from agi_green.dispatcher import Dispatcher

class ChatNode(Dispatcher):
    async def on_mq_chat(self, author: str, content: str):
        'Receive chat message from RabbitMQ'
        await self.send_ws('append_chat', content=content)

    async def on_ws_chat_input(self, content: str = ''):
        'Handle chat input from browser'
        await self.send_mq('chat',
            author=self.name,
            content=content
        )

Protocol System

The framework uses a protocol-based architecture where each protocol handles specific types of communication:

  • ws: WebSocket communication with browser
  • mq: RabbitMQ for peer-to-peer messaging
  • gpt: OpenAI API integration
  • http: HTTP/HTTPS server
  • Custom protocols can be added by extending the base Protocol class

Message Formatting

Support for rich content in messages:

# Markdown with syntax highlighting
await self.send_ws('append_chat',
    content='```python\nprint("Hello")\n```'
)

# Mermaid diagrams
await self.send_ws('append_chat',
    content='```mermaid\ngraph TD;\nA-->B;\n```'
)

# Math equations
await self.send_ws('append_chat',
    content=r'\\( \int x dx = \frac{x^2}{2} + C \\)'
)

Development Status

Currently in active development (March 2024). The framework is being used in production but the API may have breaking changes. See CHANGELOG for version history.

Requirements

  • Python 3.11+
  • RabbitMQ server
  • Modern web browser

Contributing

Contributions are welcome! Please check our Contributing Guidelines for details.

License

Copyright (c) 2024 Ken Seehart, AGI Green. See LICENSE for details.

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

agi_green-0.4.7.tar.gz (12.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agi_green-0.4.7-py3-none-any.whl (12.6 MB view details)

Uploaded Python 3

File details

Details for the file agi_green-0.4.7.tar.gz.

File metadata

  • Download URL: agi_green-0.4.7.tar.gz
  • Upload date:
  • Size: 12.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for agi_green-0.4.7.tar.gz
Algorithm Hash digest
SHA256 98fa7077f7804069295cc329674c452dfd0e96f3807b4c4134dac42d444c0b5e
MD5 8a556c3ecc8348b9ee1e5520b9b7218e
BLAKE2b-256 72dac30876b3503719b876ddf9a2a9bbdd29a37e1e1e5d4657ee67b7f65eb029

See more details on using hashes here.

File details

Details for the file agi_green-0.4.7-py3-none-any.whl.

File metadata

  • Download URL: agi_green-0.4.7-py3-none-any.whl
  • Upload date:
  • Size: 12.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for agi_green-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 f95b6893d3cff1ed9f9d98576064130d1b229b0fb417e1a6f1c90193e377de5c
MD5 d3142f2e0971058ba050b29277eccdfd
BLAKE2b-256 e331da0a5ee9de08bb44cbf01fae057f498803f9c187f54d35f9bc6ee3de60e5

See more details on using hashes here.

Supported by

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