Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -31,6 +31,10 @@ from langgraph.prebuilt import ToolNode
|
|
31 |
# Load environment variables
|
32 |
load_dotenv()
|
33 |
|
|
|
|
|
|
|
|
|
34 |
# Set up the DB URI using an environment variable.
|
35 |
# In your .env file, ensure you have:
|
36 |
# DATABASE_URI=sqlite:///employee.db
|
@@ -46,16 +50,6 @@ os.environ["GROQ_API_KEY"] = GROQ_API_KEY
|
|
46 |
from langchain_groq import ChatGroq
|
47 |
llm = ChatGroq(model="llama3-70b-8192")
|
48 |
|
49 |
-
# Connect to the provided database URI using SQLDatabase (which expects a URI)
|
50 |
-
#from langchain_community.utilities import SQLDatabase
|
51 |
-
#db = SQLDatabase.from_uri(DATABASE_URI)
|
52 |
-
|
53 |
-
# Create SQL toolkit and get the tools
|
54 |
-
#from langchain_community.agent_toolkits import SQLDatabaseToolkit
|
55 |
-
#toolkit = SQLDatabaseToolkit(db=db, llm=llm)
|
56 |
-
#tools = toolkit.get_tools()
|
57 |
-
|
58 |
-
# Define a custom query tool for executing SQL queries
|
59 |
@tool
|
60 |
def db_query_tool(query: str) -> str:
|
61 |
"""
|
@@ -63,7 +57,7 @@ def db_query_tool(query: str) -> str:
|
|
63 |
If the query is invalid or returns no result, an error message will be returned.
|
64 |
In case of an error, the user is advised to rewrite the query and try again.
|
65 |
"""
|
66 |
-
result =
|
67 |
if not result:
|
68 |
return "Error: Query failed. Please rewrite your query and try again."
|
69 |
return result
|
@@ -213,6 +207,24 @@ def create_agent_app(db_path: str):
|
|
213 |
# Compile and return the agent application workflow.
|
214 |
return workflow.compile()
|
215 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
###############################################################################
|
217 |
# Application Factory: create_app()
|
218 |
#
|
@@ -238,6 +250,7 @@ def create_app():
|
|
238 |
|
239 |
@flask_app.route("/generate", methods=["POST"])
|
240 |
def generate():
|
|
|
241 |
data = request.json
|
242 |
prompt = data.get("prompt", "")
|
243 |
socketio.emit("log", {"message": f"[INFO]: Received prompt: {prompt}\n"})
|
@@ -267,20 +280,6 @@ def create_app():
|
|
267 |
|
268 |
return flask_app, socketio
|
269 |
|
270 |
-
###############################################################################
|
271 |
-
# Helper function to run the agent; uses the global agent_app.
|
272 |
-
###############################################################################
|
273 |
-
def run_agent(prompt, socketio):
|
274 |
-
try:
|
275 |
-
query = {"messages": [("user", prompt)]}
|
276 |
-
result = agent_app.invoke(query)
|
277 |
-
result = result["messages"][-1].tool_calls[0]["args"]["final_answer"]
|
278 |
-
print("final_answer------>", result)
|
279 |
-
socketio.emit("final", {"message": f"{result}"})
|
280 |
-
except Exception as e:
|
281 |
-
socketio.emit("log", {"message": f"[ERROR]: {str(e)}"})
|
282 |
-
socketio.emit("final", {"message": "Generation failed."})
|
283 |
-
|
284 |
# Create the app and assign to "app" for Gunicorn compatibility.
|
285 |
app, socketio_instance = create_app()
|
286 |
|
|
|
31 |
# Load environment variables
|
32 |
load_dotenv()
|
33 |
|
34 |
+
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
|
35 |
+
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
|
36 |
+
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
|
37 |
+
|
38 |
# Set up the DB URI using an environment variable.
|
39 |
# In your .env file, ensure you have:
|
40 |
# DATABASE_URI=sqlite:///employee.db
|
|
|
50 |
from langchain_groq import ChatGroq
|
51 |
llm = ChatGroq(model="llama3-70b-8192")
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
@tool
|
54 |
def db_query_tool(query: str) -> str:
|
55 |
"""
|
|
|
57 |
If the query is invalid or returns no result, an error message will be returned.
|
58 |
In case of an error, the user is advised to rewrite the query and try again.
|
59 |
"""
|
60 |
+
result = db_instance.run_no_throw(query)
|
61 |
if not result:
|
62 |
return "Error: Query failed. Please rewrite your query and try again."
|
63 |
return result
|
|
|
207 |
# Compile and return the agent application workflow.
|
208 |
return workflow.compile()
|
209 |
|
210 |
+
###############################################################################
|
211 |
+
# Helper function to run the agent; uses the global agent_app.
|
212 |
+
###############################################################################
|
213 |
+
def run_agent(prompt, socketio):
|
214 |
+
try:
|
215 |
+
query = {"messages": [("user", prompt)]}
|
216 |
+
result = agent_app.invoke(query)
|
217 |
+
try:
|
218 |
+
result = result["messages"][-1].tool_calls[0]["args"]["final_answer"]
|
219 |
+
except Exception:
|
220 |
+
result = "Query failed or no valid answer found."
|
221 |
+
|
222 |
+
print("final_answer------>", result)
|
223 |
+
socketio.emit("final", {"message": f"{result}"})
|
224 |
+
except Exception as e:
|
225 |
+
socketio.emit("log", {"message": f"[ERROR]: {str(e)}"})
|
226 |
+
socketio.emit("final", {"message": "Generation failed."})
|
227 |
+
|
228 |
###############################################################################
|
229 |
# Application Factory: create_app()
|
230 |
#
|
|
|
250 |
|
251 |
@flask_app.route("/generate", methods=["POST"])
|
252 |
def generate():
|
253 |
+
socketio.emit("log", {"message": "[STEP]: Entering query_gen..."})
|
254 |
data = request.json
|
255 |
prompt = data.get("prompt", "")
|
256 |
socketio.emit("log", {"message": f"[INFO]: Received prompt: {prompt}\n"})
|
|
|
280 |
|
281 |
return flask_app, socketio
|
282 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
283 |
# Create the app and assign to "app" for Gunicorn compatibility.
|
284 |
app, socketio_instance = create_app()
|
285 |
|