icdbot / app.py
oneilsh's picture
trying huggingface spaces...
c0aa211
# Example usage of StreamlitKani
########################
##### 0 - load libs
########################
# kani_streamlit imports
import kani_utils.kani_streamlit_server as ks
# for reading API keys from .env file
import os
import dotenv # pip install python-dotenv
# kani imports
from kani.engines.openai import OpenAIEngine
# load app-defined agents
from agents import ICDBot
# read API keys .env file (e.g. set OPENAI_API_KEY=.... in .env and gitignore .env)
dotenv.load_dotenv()
########################
##### 1 - Configuration
########################
# initialize the application and set some page settings
# parameters here are passed to streamlit.set_page_config,
# see more at https://docs.streamlit.io/library/api-reference/utilities/st.set_page_config
# this function MUST be run first
ks.initialize_app_config(
show_function_calls = True,
page_title = "ICDBot",
page_icon = "🤖", # can also be a URL
initial_sidebar_state = "expanded", # or "expanded"
menu_items = {
"Get Help": "https://github.com/.../issues",
"Report a Bug": "https://github.com/.../issues",
"About": "An AI agent with access to the ICD-10-CM vocabulary.",
}
)
########################
##### 2 - Define Agents
########################
# define an engine to use (see Kani documentation for more info)
engine = OpenAIEngine(os.environ["OPENAI_API_KEY"], model="gpt-4o")
# engine = OpenAIEngine(os.environ["OPENAI_API_KEY"], model="o1")
# We also have to define a function that returns a dictionary of agents to serve
# Agents are keyed by their name, which is what the user will see in the UI
def get_agents():
return {
"ICDBot": ICDBot(engine, prompt_tokens_cost = 0.005, completion_tokens_cost = 0.015),
}
# tell the app to use that function to create agents when needed
ks.set_app_agents(get_agents)
########################
##### 3 - Serve App
########################
ks.serve_app()