MEAHist-Chatbot / app.py
vorkna's picture
Update app.py
77ada38 verified
import gradio as gr
from agno.agent import Agent
from agno.embedder.google import GeminiEmbedder
from agno.knowledge.url import UrlKnowledge
from agno.knowledge.text import TextKnowledgeBase
from agno.knowledge.markdown import MarkdownKnowledgeBase
from agno.models.google import Gemini
from agno.storage.sqlite import SqliteStorage
from agno.vectordb.lancedb import LanceDb, SearchType
# Load Agno documentation in a knowledge base
# You can also use `https://docs.agno.com/llms-full.txt` for the full documentation
# knowledge = UrlKnowledge(
# urls=["https://www.mea.or.th/about-mea/background/history"],
# vector_db=LanceDb(
# uri="tmp/lancedb",
# table_name="mea-hist",
# search_type=SearchType.hybrid,
# # embedder=OllamaEmbedder(id="bge-m3"),
# embedder=GeminiEmbedder(),
# ),
# )
# Alternative knowledge base using company policies
knowledge = MarkdownKnowledgeBase(
path="./meahist.md",
vector_db=LanceDb(
uri="tmp/lancedb",
table_name="mea-docs",
search_type=SearchType.hybrid,
# Use OpenAI for embeddings
embedder=GeminiEmbedder(dimensions=768),
),
)
# Store agent sessions in a SQLite database
storage = SqliteStorage(table_name="agent_sessions", db_file="tmp/agent.db")
# model_id = "gemini-2.5-flash"
model_id = "gemini-2.5-flash-lite"
# model_id = "gemma-3-12b-it"
agent = Agent(
name="Agno Assist",
model=Gemini(id=model_id),
instructions=[
"Search your knowledge before answering the question.",
],
knowledge=knowledge,
storage=storage,
search_knowledge=True,
# add_datetime_to_instructions=True,
# Add the chat history to the messages
# add_history_to_messages=True,
read_chat_history=True,
show_tool_calls=False,
# Number of history runs
num_history_runs=3,
markdown=True,
)
def chat(message, history):
response = agent.run(message, stream=True)
content = ""
for event in response:
if event.event == "RunCompleted":
break
if event.event == "RunResponseContent":
content += event.content
yield content
yield content
# Load the knowledge base, comment out after first run
# Set recreate to True to recreate the knowledge base if needed
agent.knowledge.load(recreate=False)
# Create the Gradio interface
demo = gr.ChatInterface(
chat,
title="MEA History Chat Bot",
description="Ask questions about MEA (Metropolitan Electricity Authority) history and get AI-powered answers. Data source: https://www.mea.or.th/about-mea/background/history",
examples=[
"ประวัติความเป็นมาของ MEA คืออะไร",
"MEA ก่อตั้งเมื่อไหร่",
"เหตุการณ์สำคัญในการพัฒนาของ MEA คืออะไร",
],
)
if __name__ == "__main__":
demo.launch()