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",
})
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| aichemy_py-0.0.1.tar.gz | 3.2 kB | Without provenance | Details for aichemy_py-0.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aichemy_py-0.0.1-py3-none-any.whl | Python 3 | none | any | Details for aichemy_py-0.0.1-py3-none-any.whl |
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
|
Security for aichemy-py 0.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.