1313app = Flask (__name__ )
1414
1515# Serve the HTML file
16- @app .route ('/' )
16+ @app .route ("/" )
1717def index ():
18- return send_from_directory ('.' , ' research_ui.html' )
18+ return send_from_directory ("." , " research_ui.html" )
1919
20- @app .route ('/api/research' , methods = ['POST' ])
20+
21+ @app .route ("/api/research" , methods = ["POST" ])
2122def research ():
2223 try :
2324 data = request .get_json ()
24- prompt = data .get (' prompt' )
25-
25+ prompt = data .get (" prompt" )
26+
2627 if not prompt :
27- return jsonify ({'error' : 'Prompt is required' }), 400
28-
29- result = asyncio .run (run_workflow (ResearchWorkflow .run , prompt , 'research-workflow' ))
30- return jsonify ({'result' : result })
31-
28+ return jsonify ({"error" : "Prompt is required" }), 400
29+
30+ result = asyncio .run (
31+ run_workflow (ResearchWorkflow .run , prompt , "research-workflow" )
32+ )
33+ return jsonify ({"result" : result })
34+
3235 except Exception as e :
33- return jsonify ({' error' : str (e )}), 500
36+ return jsonify ({" error" : str (e )}), 500
3437
35- @app .route ('/api/agents-as-tools' , methods = ['POST' ])
38+
39+ @app .route ("/api/agents-as-tools" , methods = ["POST" ])
3640def agents_as_tools ():
3741 try :
3842 data = request .get_json ()
39- prompt = data .get (' prompt' )
40-
43+ prompt = data .get (" prompt" )
44+
4145 if not prompt :
42- return jsonify ({'error' : 'Prompt is required' }), 400
43-
44- result = asyncio .run (run_workflow (AgentsAsToolsWorkflow .run , prompt , 'agents-as-tools-workflow' ))
45- return jsonify ({'result' : result })
46-
46+ return jsonify ({"error" : "Prompt is required" }), 400
47+
48+ result = asyncio .run (
49+ run_workflow (AgentsAsToolsWorkflow .run , prompt , "agents-as-tools-workflow" )
50+ )
51+ return jsonify ({"result" : result })
52+
4753 except Exception as e :
48- return jsonify ({' error' : str (e )}), 500
54+ return jsonify ({" error" : str (e )}), 500
4955
50- @app .route ('/api/tools' , methods = ['POST' ])
56+
57+ @app .route ("/api/tools" , methods = ["POST" ])
5158def tools ():
5259 try :
5360 data = request .get_json ()
54- prompt = data .get (' prompt' )
55-
61+ prompt = data .get (" prompt" )
62+
5663 if not prompt :
57- return jsonify ({' error' : ' Prompt is required' }), 400
58-
59- result = asyncio .run (run_workflow (ToolsWorkflow .run , prompt , ' tools-workflow' ))
60- return jsonify ({' result' : result })
61-
64+ return jsonify ({" error" : " Prompt is required" }), 400
65+
66+ result = asyncio .run (run_workflow (ToolsWorkflow .run , prompt , " tools-workflow" ))
67+ return jsonify ({" result" : result })
68+
6269 except Exception as e :
63- return jsonify ({' error' : str (e )}), 500
70+ return jsonify ({" error" : str (e )}), 500
6471
65- @app .route ('/api/customer-service' , methods = ['POST' ])
72+
73+ @app .route ("/api/customer-service" , methods = ["POST" ])
6674def customer_service ():
6775 try :
6876 data = request .get_json ()
69- prompt = data .get (' prompt' )
70-
77+ prompt = data .get (" prompt" )
78+
7179 if not prompt :
72- return jsonify ({' error' : ' Prompt is required' }), 400
73-
80+ return jsonify ({" error" : " Prompt is required" }), 400
81+
7482 # For customer service, we'll start a workflow and send a message
7583 result = asyncio .run (run_customer_service_workflow (prompt ))
76- return jsonify ({' result' : result })
77-
84+ return jsonify ({" result" : result })
85+
7886 except Exception as e :
79- return jsonify ({'error' : str (e )}), 500
87+ return jsonify ({"error" : str (e )}), 500
88+
8089
8190async def run_workflow (workflow_fn , prompt , workflow_prefix ):
8291 client = await Client .connect (
8392 "localhost:7233" ,
8493 data_converter = open_ai_data_converter ,
8594 )
86-
95+
8796 result = await client .execute_workflow (
8897 workflow_fn ,
8998 prompt ,
9099 id = f"{ workflow_prefix } -{ abs (hash (prompt ))} " ,
91100 task_queue = "openai-agents-task-queue" ,
92101 )
93-
102+
94103 return result
95104
105+
96106async def run_customer_service_workflow (prompt ):
97- from openai_agents .workflows .customer_service_workflow import ProcessUserMessageInput
98-
107+ from openai_agents .workflows .customer_service_workflow import (
108+ ProcessUserMessageInput ,
109+ )
110+
99111 client = await Client .connect (
100112 "localhost:7233" ,
101113 data_converter = open_ai_data_converter ,
102114 )
103-
115+
104116 workflow_id = f"customer-service-{ abs (hash (prompt ))} "
105-
117+
106118 # Start the customer service workflow
107119 handle = await client .start_workflow (
108120 CustomerServiceWorkflow .run ,
109121 id = workflow_id ,
110122 task_queue = "openai-agents-task-queue" ,
111123 )
112-
124+
113125 # Send the user message
114- message_input = ProcessUserMessageInput (
115- user_input = prompt , chat_length = 0
116- )
117-
126+ message_input = ProcessUserMessageInput (user_input = prompt , chat_length = 0 )
127+
118128 new_history = await handle .execute_update (
119129 CustomerServiceWorkflow .process_user_message , message_input
120130 )
121-
122- return '\n ' .join (new_history ) if new_history else 'No response received'
123131
124- if __name__ == '__main__' :
125- app .run (debug = True , port = 5000 , host = '0.0.0.0' )
132+ return "\n " .join (new_history ) if new_history else "No response received"
133+
134+
135+ if __name__ == "__main__" :
136+ app .run (debug = True , port = 5000 , host = "0.0.0.0" )
0 commit comments