cafierom commited on
Commit
b1ed09f
·
verified ·
1 Parent(s): 2be341f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -0
app.py CHANGED
@@ -347,6 +347,11 @@ def parser_node(state: State) -> State:
347
  '''
348
  props_string = state["props_string"]
349
  query_task = state["query_task"]
 
 
 
 
 
350
 
351
  check_prompt = f'Determine if there is enough CONTEXT below to answer the original \
352
  QUERY TASK. If there is, respond with "PROCEED #" . If there is not enough information \
@@ -397,6 +402,21 @@ TOOL RESULTS: {props_string}. '
397
 
398
  return {"messages": res}
399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  def get_chemtool(state):
401
  '''
402
  '''
@@ -425,6 +445,8 @@ def loop_or_not(state):
425
  print(f"(line 417) Loop? {state['loop_again']}")
426
  if state["loop_again"] == "loop_again":
427
  return True
 
 
428
  else:
429
  return False
430
 
@@ -446,6 +468,7 @@ builder.add_node("similars_node", similars_node)
446
  builder.add_node("loop_node", loop_node)
447
  builder.add_node("parser_node", parser_node)
448
  builder.add_node("reflect_node", reflect_node)
 
449
 
450
  builder.add_edge(START, "first_node")
451
  builder.add_conditional_edges("first_node", get_chemtool, {
@@ -473,9 +496,11 @@ builder.add_conditional_edges("loop_node", get_chemtool, {
473
 
474
  builder.add_conditional_edges("parser_node", loop_or_not, {
475
  True: "retry_node",
 
476
  False: "reflect_node"})
477
 
478
  builder.add_edge("reflect_node", END)
 
479
 
480
  graph = builder.compile()
481
 
 
347
  '''
348
  props_string = state["props_string"]
349
  query_task = state["query_task"]
350
+ tool_choice = state["tool_choice"]
351
+
352
+ if (tool_choice[0] == None) and (tool_choice[1] == None):
353
+ state["loop_again"] = "finish_gracefully"
354
+ return state
355
 
356
  check_prompt = f'Determine if there is enough CONTEXT below to answer the original \
357
  QUERY TASK. If there is, respond with "PROCEED #" . If there is not enough information \
 
402
 
403
  return {"messages": res}
404
 
405
+ def graceful_exit_node(state: State) -> State:
406
+ '''
407
+ Called when the Agent cannot assign any tools for the task
408
+ '''
409
+ props_string = state["props_string"]
410
+ prompt = f'You are a chemistry agent that has not been able to fulfill the task assigned. \
411
+ Write an apology to the user and include any information in the CONTEXT below, just in case it can \
412
+ prove useful. \n \
413
+ CONTEXT: {props_string} \'
414
+
415
+ res = chat_model.invoke(prompt)
416
+
417
+ return {"messages": res}
418
+
419
+
420
  def get_chemtool(state):
421
  '''
422
  '''
 
445
  print(f"(line 417) Loop? {state['loop_again']}")
446
  if state["loop_again"] == "loop_again":
447
  return True
448
+ elif tate["loop_again"] == "finish_gracefully":
449
+ return 'lets_get_outta_here'
450
  else:
451
  return False
452
 
 
468
  builder.add_node("loop_node", loop_node)
469
  builder.add_node("parser_node", parser_node)
470
  builder.add_node("reflect_node", reflect_node)
471
+ builder.add_node("graceful_exit_node", graceful_exit_node)
472
 
473
  builder.add_edge(START, "first_node")
474
  builder.add_conditional_edges("first_node", get_chemtool, {
 
496
 
497
  builder.add_conditional_edges("parser_node", loop_or_not, {
498
  True: "retry_node",
499
+ 'lets_get_outta_here': "graceful_exit_node",
500
  False: "reflect_node"})
501
 
502
  builder.add_edge("reflect_node", END)
503
+ builder.add_edge("graceful_exit_node", END)
504
 
505
  graph = builder.compile()
506