Aichemy is still in development and everything in this readme is a possible concept yet.
Aichemy makes it easy to use AI in your database. Consider this as an observation layer that watch the changes in DB and act when possible. With powerful AI, many seemingly complex update logics can be implemented:
- When
ageis updated, combining withtitleto guessinterested(bool, if user wants to buy our services). - When
biois updated, combing withnameto generate a personalizedsale_dm(string, content of DM) - ...
All you need to do is focusing on the business logic, and write the instructions clearly.
Install
pip install aichemy SQLAlchemy
aichemy only supports SQLAlchemy for now.
QuickStart
1. Design your DB
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
title = Column(String)
intro = Column(String)
dm_message = Column(String, nullable=True)
engine = create_engine("sqlite:///test.db")
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
2. Write aichemy functions
import aichemy as ac
@ac.watch(User.intro).with(User.name, User.title).to(User.dm_message)
def write_dm(row: dict, results: dict):
"""Based on the user information, write a thank-you DM for our AI product.
### Information
Name: {users.name}
Title: {users.title}
Self-Intro: {users.intro}
"""
# pre-processes
row['users.name'] = row['users.name'].capitalize()
yield
# post-process
results['users.dm_message'] = results['users.dm_message'][:200]
rowis a dict containing the values of (User.intro,User.name,User.title)- You can use
docstringof the function to write your instructions - Before
yield, you can modify the values insiderowfor pre-process. At this time,resultsis always empty and any changes toresultsis meaningless. - After
yield, you can modify the return values insideresultsbefore they're committed to Database
3. Start watching
write_dm.start()
with Session() as session:
user = User(name="John", title="Software Engineer", intro="I love AI and basketball")
session.add(user)
session.commit()
4. Debuging
Debug the prompt is easy in aichemy:
write_dm.debug({
"users.name": "Gus",
"title": "Founder of Memobase",
"users.intor": "I'm a programmer",
})
Release files for aichemy-py 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aichemy_py-0.0.1.tar.gz | 3.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aichemy_py-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.1 kB
Release files / aichemy_py-0.0.1.tar.gz
| Download URL | aichemy_py-0.0.1.tar.gz |
|---|---|
| Size | 3.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09e32526238d05b80016aace6174ab05d88f7d9e0c2c48ee292a4273d3c878b8
|
|
BLAKE2b-256 checksum How to use checksums |
b4cdc864128e9c65ae67dfcc008ef65d3e7bca3d034828e9f88eef2e9687c874
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.9
|
Release files / aichemy_py-0.0.1-py3-none-any.whl
| Download URL | aichemy_py-0.0.1-py3-none-any.whl |
|---|---|
| Size | 2.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f7d67754a80027ea9c58a8e0b54389b4a7224ed54d72081553351a1f94b3777
|
|
BLAKE2b-256 checksum How to use checksums |
e6f41cb0cda50f4455ffcdd5437ef9cb6c39f4fbc76e7ab52c91af85edea036a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.9
|