File size: 2,405 Bytes
dc66050 3674844 8586ebb f1aaba3 cf29376 f1aaba3 ee14926 cf29376 5992538 ee14926 dc66050 8586ebb ee14926 2d1e4f3 ee14926 2d1e4f3 ee14926 2d1e4f3 ee14926 2d1e4f3 ee14926 2d1e4f3 8586ebb f1aaba3 8586ebb 8d06cd8 8586ebb 9f499f9 8586ebb ee14926 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
import gradio as gr
from huggingface_hub import InferenceClient
import os
from smolagents import tool, CodeAgent, HfApiModel, GradioUI
from sqlalchemy import (
create_engine,
MetaData,
Table,
Column,
String,
Integer,
Float,
insert,
inspect,
text,
)
import spaces
engine = create_engine("sqlite:///:memory:")
@spaces.GPU
def dummy():
pass
@tool
def sql_engine(query: str) -> str:
"""
Allows you to perform SQL queries on the table. Returns a string representation of the result.
The table is named 'receipts'. Its description is as follows:
Columns:
- receipt_id: INTEGER
- customer_name: VARCHAR(16)
- price: FLOAT
- tip: FLOAT
Args:
query: The query to perform. This should be correct SQL.
"""
output = ""
with engine.connect() as con:
rows = con.execute(text(query))
for row in rows:
output += "\n" + str(row)
return output
def init_db():
metadata_obj = MetaData()
def insert_rows_into_table(rows, table, engine=engine):
for row in rows:
stmt = insert(table).values(**row)
with engine.begin() as connection:
connection.execute(stmt)
table_name = "receipts"
receipts = Table(
table_name,
metadata_obj,
Column("receipt_id", Integer, primary_key=True),
Column("customer_name", String(16), primary_key=True),
Column("price", Float),
Column("tip", Float),
)
metadata_obj.create_all(engine)
rows = [
{"receipt_id": 1, "customer_name": "Alan Payne", "price": 12.06, "tip": 1.20},
{"receipt_id": 2, "customer_name": "Alex Mason", "price": 23.86, "tip": 0.24},
{
"receipt_id": 3,
"customer_name": "Woodrow Wilson",
"price": 53.43,
"tip": 5.43,
},
{
"receipt_id": 4,
"customer_name": "Margaret James",
"price": 21.11,
"tip": 1.00,
},
]
insert_rows_into_table(rows, receipts)
if __name__ == "__main__":
init_db()
agent = CodeAgent(
tools=[sql_engine],
model=HfApiModel(
model_id="HuggingFaceH4/zephyr-7b-beta",
token=os.getenv("my_first_agents_hf_tokens"),
),
max_steps=3,
)
GradioUI(agent).launch()
|