1import asyncio
2from os import getenv
3
4from kern.agent import Agent
5from kern.knowledge.knowledge import Knowledge
6from kern.vectordb.singlestore import SingleStore
7from sqlalchemy.engine import create_engine
8
9USERNAME = getenv("SINGLESTORE_USERNAME")
10PASSWORD = getenv("SINGLESTORE_PASSWORD")
11HOST = getenv("SINGLESTORE_HOST")
12PORT = getenv("SINGLESTORE_PORT")
13DATABASE = getenv("SINGLESTORE_DATABASE")
14SSL_CERT = getenv("SINGLESTORE_SSL_CERT", None)
15
16db_url = (
17 f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8mb4"
18)
19if SSL_CERT:
20 db_url += f"&ssl_ca={SSL_CERT}&ssl_verify_cert=true"
21
22db_engine = create_engine(db_url)
23
24vector_db = SingleStore(
25 collection="recipes",
26 db_engine=db_engine,
27 schema=DATABASE,
28)
29
30knowledge = Knowledge(name="My SingleStore Knowledge Base", vector_db=vector_db)
31
32agent = Agent(
33 knowledge=knowledge,
34 search_knowledge=True,
35 read_chat_history=True,
36)
37
38if __name__ == "__main__":
39 asyncio.run(
40 knowledge.ainsert(
41 name="Recipes",
42 url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
43 metadata={"doc_type": "recipe_book"},
44 )
45 )
46
47 asyncio.run(
48 agent.aprint_response("How do I make pad thai?", markdown=True)
49 )