File tree Expand file tree Collapse file tree 5 files changed +66
-9
lines changed
services/streamlits/pages Expand file tree Collapse file tree 5 files changed +66
-9
lines changed Original file line number Diff line number Diff line change @@ -41,6 +41,9 @@ COSMOSDB_DATABASE_NAME="template_langgraph"
4141COSMOSDB_CONTAINER_NAME = " kabuto"
4242COSMOSDB_PARTITION_KEY = " /id"
4343
44+ # SQL Database Settings
45+ SQL_DATABASE_URI = " sqlite:///template_langgraph.db"
46+
4447# ---------
4548# Utilities
4649# ---------
Original file line number Diff line number Diff line change @@ -165,3 +165,4 @@ requirements.txt
165165assets /
166166.langgraph_api
167167generated /
168+ * .db
Original file line number Diff line number Diff line change 55
66from template_langgraph .agents .chat_with_tools_agent .agent import AgentState , graph
77
8+ if "chat_history" not in st .session_state :
9+ st .session_state ["chat_history" ] = []
10+
11+ for msg in st .session_state ["chat_history" ]:
12+ if isinstance (msg , dict ):
13+ st .chat_message (msg ["role" ]).write (msg ["content" ])
14+ else :
15+ st .chat_message ("assistant" ).write (msg .content )
16+
817if prompt := st .chat_input ():
18+ st .session_state ["chat_history" ].append ({"role" : "user" , "content" : prompt })
919 st .chat_message ("user" ).write (prompt )
1020 with st .chat_message ("assistant" ):
1121 response : AgentState = graph .invoke (
12- {
13- "messages" : [
14- {
15- "role" : "user" ,
16- "content" : prompt ,
17- },
18- ]
19- },
22+ {"messages" : st .session_state ["chat_history" ]},
2023 {
2124 "callbacks" : [
2225 StreamlitCallbackHandler (st .container ()),
2326 ]
2427 },
2528 )
29+ st .session_state ["chat_history" ].append (response ["messages" ][- 1 ])
2630 st .write (response ["messages" ][- 1 ].content )
Original file line number Diff line number Diff line change 1+ from template_langgraph .llms .azure_openais import AzureOpenAiWrapper
12from template_langgraph .tools .cosmosdb_tool import search_cosmosdb
23from template_langgraph .tools .dify_tool import run_dify_workflow
34from template_langgraph .tools .elasticsearch_tool import search_elasticsearch
45from template_langgraph .tools .qdrant_tool import search_qdrant
6+ from template_langgraph .tools .sql_database_tool import SqlDatabaseClientWrapper
57
68DEFAULT_TOOLS = [
79 search_cosmosdb ,
810 run_dify_workflow ,
911 search_qdrant ,
1012 search_elasticsearch ,
11- ]
13+ ] + SqlDatabaseClientWrapper ().get_tools (
14+ llm = AzureOpenAiWrapper ().chat_model ,
15+ )
Original file line number Diff line number Diff line change 1+ from functools import lru_cache
2+
3+ from langchain_community .agent_toolkits .sql .toolkit import SQLDatabaseToolkit
4+ from langchain_community .utilities .sql_database import SQLDatabase
5+ from langchain_core .language_models import BaseLanguageModel
6+ from langchain_core .tools .base import BaseTool
7+ from pydantic_settings import BaseSettings , SettingsConfigDict
8+
9+
10+ class Settings (BaseSettings ):
11+ sql_database_uri : str = "sqlite:///template_langgraph.db"
12+
13+ model_config = SettingsConfigDict (
14+ env_file = ".env" ,
15+ env_ignore_empty = True ,
16+ extra = "ignore" ,
17+ )
18+
19+
20+ @lru_cache
21+ def get_sql_database_settings () -> Settings :
22+ """Get SQL Database settings."""
23+ return Settings ()
24+
25+
26+ class SqlDatabaseClientWrapper :
27+ def __init__ (
28+ self ,
29+ settings : Settings = None ,
30+ ):
31+ if settings is None :
32+ settings = get_sql_database_settings ()
33+ self .db = SQLDatabase .from_uri (
34+ database_uri = settings .sql_database_uri ,
35+ )
36+
37+ def get_tools (
38+ self ,
39+ llm : BaseLanguageModel ,
40+ ) -> list [BaseTool ]:
41+ """Get SQL Database tools."""
42+ return SQLDatabaseToolkit (
43+ db = self .db ,
44+ llm = llm ,
45+ ).get_tools ()
You can’t perform that action at this time.
0 commit comments