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"
41
41
COSMOSDB_CONTAINER_NAME = " kabuto"
42
42
COSMOSDB_PARTITION_KEY = " /id"
43
43
44
+ # SQL Database Settings
45
+ SQL_DATABASE_URI = " sqlite:///template_langgraph.db"
46
+
44
47
# ---------
45
48
# Utilities
46
49
# ---------
Original file line number Diff line number Diff line change @@ -165,3 +165,4 @@ requirements.txt
165
165
assets /
166
166
.langgraph_api
167
167
generated /
168
+ * .db
Original file line number Diff line number Diff line change 5
5
6
6
from template_langgraph .agents .chat_with_tools_agent .agent import AgentState , graph
7
7
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
+
8
17
if prompt := st .chat_input ():
18
+ st .session_state ["chat_history" ].append ({"role" : "user" , "content" : prompt })
9
19
st .chat_message ("user" ).write (prompt )
10
20
with st .chat_message ("assistant" ):
11
21
response : AgentState = graph .invoke (
12
- {
13
- "messages" : [
14
- {
15
- "role" : "user" ,
16
- "content" : prompt ,
17
- },
18
- ]
19
- },
22
+ {"messages" : st .session_state ["chat_history" ]},
20
23
{
21
24
"callbacks" : [
22
25
StreamlitCallbackHandler (st .container ()),
23
26
]
24
27
},
25
28
)
29
+ st .session_state ["chat_history" ].append (response ["messages" ][- 1 ])
26
30
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
1
2
from template_langgraph .tools .cosmosdb_tool import search_cosmosdb
2
3
from template_langgraph .tools .dify_tool import run_dify_workflow
3
4
from template_langgraph .tools .elasticsearch_tool import search_elasticsearch
4
5
from template_langgraph .tools .qdrant_tool import search_qdrant
6
+ from template_langgraph .tools .sql_database_tool import SqlDatabaseClientWrapper
5
7
6
8
DEFAULT_TOOLS = [
7
9
search_cosmosdb ,
8
10
run_dify_workflow ,
9
11
search_qdrant ,
10
12
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