Ryoma
AI Powered Data Agent framework, a comprehensive solution for data analysis, engineering, and visualization. This version is compatible with pydandic v2.
Tech Stack
Our platform leverages a combination of cutting-edge technologies and frameworks:
- Langchain: Facilitates the seamless integration of language models into application workflows, significantly enhancing AI interaction capabilities.
- Reflex: An open-source framework for quickly building beautiful, interactive web applications in pure Python
- Apache Arrow: A cross-language development platform for in-memory data that specifies a standardized language-independent columnar memory format for flat and hierarchical data, organized for efficient analytic operations on modern hardware like CPUs and GPUs.
- Jupyter Ai Magics: A JupyterLab extension that provides a set of magics for working with AI models.
- Amundsen: A data discovery and metadata platform that helps users discover, understand, and trust the data they use.
- Ibis: A Python data analysis framework that provides a pandas-like API for analytics on large datasets.
- Feast: An operational feature store for managing and serving machine learning features to models in production.
Installation
Simply install the package using pip:
pip install ryoma_ai
Or with extra dependencies:
pip install ryoma_ai[snowflake]
Basic Example
Below is an example of using SqlAgent to connect to a postgres database and ask a question. You can read more details in the documentation.
from ryoma_ai.agent.sql import SqlAgent
from ryoma_ai.datasource.postgres import PostgresDataSource
# Connect to a postgres catalog
datasource = PostgresDataSource("postgresql://user:password@localhost:5432/dbname")
# Create a SQL agent
sql_agent = SqlAgent("gpt-3.5-turbo").add_datasource(datasource)
# ask question to the agent
sql_agent.stream("I want to get the top 5 customers which making the most purchases", display=True)
The Sql agent will try to run the tool as shown below:
================================ Human Message =================================
I want to get the top 5 customers which making the most purchases
================================== Ai Message ==================================
Tool Calls:
sql_database_query (call_mWCPB3GQGOTLYsvp21DGlpOb)
Call ID: call_mWCPB3GQGOTLYsvp21DGlpOb
Args:
query: SELECT C.C_NAME, SUM(L.L_EXTENDEDPRICE) AS TOTAL_PURCHASES FROM CUSTOMER C JOIN ORDERS O ON C.C_CUSTKEY = O.O_CUSTKEY JOIN LINEITEM L ON O.O_ORDERKEY = L.L_ORDERKEY GROUP BY C.C_NAME ORDER BY TOTAL_PURCHASES DESC LIMIT 5
result_format: pandas
Continue to run the tool with the following code:
sql_agent.stream(tool_mode=ToolMode.ONCE)
Output will look like after running the tool:
================================== Ai Message ==================================
The top 5 customers who have made the most purchases are as follows:
1. Customer#000143500 - Total Purchases: $7,154,828.98
2. Customer#000095257 - Total Purchases: $6,645,071.02
3. Customer#000087115 - Total Purchases: $6,528,332.52
4. Customer#000134380 - Total Purchases: $6,405,556.97
5. Customer#000103834 - Total Purchases: $6,397,480.12
Use Ryoma Lab
Ryoma lab is an application that allows you to interact with your data and AI models in UI. The ryoma lab is built with Reflex.
- Create Ryoma lab configuration file
rxconfig.pyin your project:
import logging
import reflex as rx
from reflex.constants import LogLevel
config = rx.Config(
app_name="ryoma_lab",
loglevel=LogLevel.INFO,
)
# Setup basic configuration for logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
- You can start the ryoma lab by running the following command:
ryoma_lab run
the ryoma lab will be available at http://localhost:3000.
Supported Models
Model provider are supported by jupyter ai magics. Ensure the corresponding environment variables are set before using the Ryoma agent.
| Provider | Provider ID | Environment variable(s) | Python package(s) |
|---|---|---|---|
| AI21 | ai21 |
AI21_API_KEY |
ai21 |
| Anthropic | anthropic |
ANTHROPIC_API_KEY |
langchain-anthropic |
| Anthropic (playground) | anthropic-playground |
ANTHROPIC_API_KEY |
langchain-anthropic |
| Bedrock | bedrock |
N/A | boto3 |
| Bedrock (playground) | bedrock-playground |
N/A | boto3 |
| Cohere | cohere |
COHERE_API_KEY |
cohere |
| ERNIE-Bot | qianfan |
QIANFAN_AK, QIANFAN_SK |
qianfan |
| Gemini | gemini |
GOOGLE_API_KEY |
langchain-google-genai |
| GPT4All | gpt4all |
N/A | gpt4all |
| Hugging Face Hub | huggingface_hub |
HUGGINGFACEHUB_API_TOKEN |
huggingface_hub, ipywidgets, pillow |
| NVIDIA | nvidia-playground |
NVIDIA_API_KEY |
langchain_nvidia_ai_endpoints |
| OpenAI | openai |
OPENAI_API_KEY |
langchain-openai |
| OpenAI (playground) | openai-playground |
OPENAI_API_KEY |
langchain-openai |
| SageMaker | sagemaker-endpoint |
N/A | boto3 |
Supported Data Sources
- Snowflake
- Sqlite
- BigQuery
- Postgres
- MySQL
- File (CSV, Excel, Parquet, etc.)
- Redshift
- DynamoDB
Supported Engines
- Apache Spark
- Apache Flink
- Presto
🛡 License
This project is licensed under the terms of the Apache Software License 2.0 license. See LICENSE for more details.
Metadata
Release files for ryoma-dev 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ryoma_dev-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / ryoma_dev-0.0.1-py3-none-any.whl
| Download URL | ryoma_dev-0.0.1-py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
614d53de490866eaaf339980430de00e27cb59c76dd6978198e2baadca48240d
|
|
BLAKE2b-256 checksum How to use checksums |
df14b5d2d0aa319669613bb8fa756aee09cecdf3dd2c9e9816c8fd1d5d0900f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|