Commit 33972126 authored by Kantz's avatar Kantz
Browse files

anpassung des Orchestrator Workflows

parent 13e707fe
......@@ -24,13 +24,26 @@ def _bootstrap_context(sheet: dict, query_text: str, tool_log: list[dict]) -> No
)
_append_tool_log(tool_log, "sympy_solve", math_request, solution)
def _extract_user_messages(messages: list[dict]) -> list[str]:
"""
Extrahiert alle Inhalte von Messages mit der Rolle 'user' und gibt sie als Liste von Strings zurück.
Der letzte user-Content wird als letztes Element in der Liste enthalten sein.
"""
user_contents = []
for message in messages:
if message.get("role") == "user":
content = message.get("content", "")
if content: # Nur hinzufügen, wenn Inhalt vorhanden ist
user_contents.append(content)
return user_contents
def run_chat(messages: list[dict], draft: str | None = None) -> dict:
# Input-Fehlerbehandlung
if not messages:
raise ValueError("messages required")
last_user = next((m for m in reversed(messages) if m.get("role") == "user"), None)
last_user = _extract_user_messages(messages)[-1] if _extract_user_messages(messages) else None
if not last_user:
raise ValueError("last user message required")
......@@ -45,25 +58,27 @@ def run_chat(messages: list[dict], draft: str | None = None) -> dict:
tool_log: list[dict] = []
if new_chat or not sheet.get("initialized"):
_bootstrap_context(sheet, last_user.get("content", ""), tool_log)
_bootstrap_context(sheet, last_user, tool_log)
sheet["initialized"] = True
history_text = context_store.format_history(messages)
sheet_text = context_store.format_sheet(sheet)
llm_solution = solver_LLM.solve_question(last_user.get("content", ""), sheet_text)
_append_tool_log(tool_log, "LLM_Solution", last_user.get("content", ""), llm_solution)
if new_chat:
llm_solution = solver_LLM.solve_question(last_user, sheet_text)
_append_tool_log(tool_log, "LLM_Solution", {"question": last_user, "sheet": sheet_text}, llm_solution)
context_store.add_LLM_solution(sheet, llm_solution)
else:
decision = decision_LLM.needs_more_context(history_text, sheet_text)
_append_tool_log(tool_log, "decision", sheet_text, decision)
_append_tool_log(tool_log, "decision", {"sheet": sheet_text}, decision)
context_store.add_decision(sheet, decision)
if decision.get("needs_more_context"):
_bootstrap_context(sheet, last_user.get("content", ""), tool_log)
_bootstrap_context(sheet, ("\n").join(_extract_user_messages(messages)), tool_log)
sheet_text = context_store.format_sheet(sheet)
# Hinweis und Ausgaben generierung
hint_args = {
"task": last_user.get("content", ""),
"task": _extract_user_messages(messages)[0],
"solution": context_store.first_math_solution(sheet),
"history": history_text,
"retrival": context_store.get_retrival(sheet),
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment