feat(batch-agent): integrate Langfuse tracing
- tracing.py: init/shutdown, trace_span, get_langfuse_callback, prompt mgmt - main.py: init_langfuse at startup, shutdown on teardown - redis_consumer.py: trace_span around journey_start/message/agent_trigger - agent_runner.py: thread langfuse_handler through classify + processing LLM - journey.py: thread langfuse_handler through _call_llm_with_tools - llm.py: accept callbacks param, forward to LLM constructors - requirements.txt: add langfuse>=3.0.0
This commit is contained in:
@@ -190,6 +190,7 @@ async def _call_llm_with_tools(
|
||||
system_prompt: str,
|
||||
history: list[dict[str, Any]],
|
||||
tools: list[Any],
|
||||
langfuse_handler: Any | None = None,
|
||||
) -> str:
|
||||
"""Build LangChain messages from history and invoke the LLM with tools.
|
||||
|
||||
@@ -203,7 +204,8 @@ async def _call_llm_with_tools(
|
||||
else:
|
||||
messages.append(AIMessage(content=turn["content"]))
|
||||
|
||||
llm = get_llm(model=None, temperature=0.4)
|
||||
callbacks = [langfuse_handler] if langfuse_handler else None
|
||||
llm = get_llm(model=None, temperature=0.4, callbacks=callbacks)
|
||||
llm_with_tools = llm.bind_tools(tools)
|
||||
tool_map = {tool_def.name: tool_def for tool_def in tools}
|
||||
|
||||
@@ -247,6 +249,8 @@ async def _call_llm_with_tools(
|
||||
async def handle_journey_start(
|
||||
user_id: str,
|
||||
frame: dict[str, Any],
|
||||
*,
|
||||
langfuse_handler: Any | None = None,
|
||||
) -> dict[str, Any]:
|
||||
"""Handle a ``journey_start`` request.
|
||||
|
||||
@@ -277,6 +281,7 @@ async def handle_journey_start(
|
||||
system_prompt=system_prompt,
|
||||
history=seed_history,
|
||||
tools=list(FILESYSTEM_TOOLS),
|
||||
langfuse_handler=langfuse_handler,
|
||||
)
|
||||
|
||||
session.history.extend(seed_history)
|
||||
@@ -313,6 +318,8 @@ async def handle_journey_start(
|
||||
async def handle_journey_message(
|
||||
user_id: str,
|
||||
frame: dict[str, Any],
|
||||
*,
|
||||
langfuse_handler: Any | None = None,
|
||||
) -> dict[str, Any]:
|
||||
"""Handle a ``journey_message`` request.
|
||||
|
||||
@@ -338,6 +345,7 @@ async def handle_journey_message(
|
||||
system_prompt=session.system_prompt,
|
||||
history=session.history,
|
||||
tools=list(FILESYSTEM_TOOLS),
|
||||
langfuse_handler=langfuse_handler,
|
||||
)
|
||||
|
||||
session.history.append({"role": "assistant", "content": ai_reply})
|
||||
@@ -358,6 +366,7 @@ async def handle_journey_message(
|
||||
system_prompt=session.system_prompt,
|
||||
history=session.history,
|
||||
tools=list(FILESYSTEM_TOOLS),
|
||||
langfuse_handler=langfuse_handler,
|
||||
)
|
||||
session.history.append({"role": "assistant", "content": nudge_reply})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user