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