|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import traceback |
|
|
from config import MODEL |
|
|
from src.core.web_configuration import WebConfiguration |
|
|
from src.engine.browser_engine import BrowserEngine |
|
|
from src.tools.tool_manager import construct_tool_definitions |
|
|
from src.client.openai_client import initialize_client |
|
|
from .response.setup import setup_response |
|
|
from .response.generator import generate_response |
|
|
from .tools.interaction import process_tool_interactions |
|
|
|
|
|
def process_user_request(user_message, chat_history): |
|
|
if not isinstance(user_message, str) or not user_message.strip(): |
|
|
yield [] |
|
|
return |
|
|
|
|
|
output_content = "" |
|
|
|
|
|
try: |
|
|
server, client_initialization_error = initialize_client() |
|
|
if client_initialization_error: |
|
|
output_content = client_initialization_error |
|
|
yield output_content |
|
|
return |
|
|
|
|
|
search_configuration = WebConfiguration() |
|
|
search_engine_instance = BrowserEngine(search_configuration) |
|
|
available_tools = construct_tool_definitions() |
|
|
|
|
|
conversation_messages = setup_response( |
|
|
chat_history, |
|
|
user_message |
|
|
) |
|
|
|
|
|
tool_response = "" |
|
|
tools_done = False |
|
|
|
|
|
for tool_update in process_tool_interactions( |
|
|
server=server, |
|
|
model_name=MODEL, |
|
|
conversation_messages=conversation_messages, |
|
|
tool_definitions=available_tools, |
|
|
search_engine=search_engine_instance |
|
|
): |
|
|
if isinstance(tool_update, str): |
|
|
tool_response = tool_update |
|
|
yield tool_response |
|
|
else: |
|
|
conversation_messages = tool_update[0] |
|
|
tool_response = tool_update[1] |
|
|
tools_done = tool_update[2] |
|
|
|
|
|
if tool_response: |
|
|
yield tool_response + "\n\n" |
|
|
|
|
|
final_response_generator = generate_response( |
|
|
server=server, |
|
|
model_name=MODEL, |
|
|
conversation_messages=conversation_messages, |
|
|
tool_definitions=available_tools, |
|
|
tools_done=tools_done |
|
|
) |
|
|
|
|
|
for final_response in final_response_generator: |
|
|
if tool_response: |
|
|
yield tool_response + "\n\n" + final_response |
|
|
else: |
|
|
yield final_response |
|
|
|
|
|
except Exception as processing_error: |
|
|
output_content += f"\nError: {str(processing_error)}\n" |
|
|
output_content += traceback.format_exc() |
|
|
yield output_content |