| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- # !/usr/bin/python
- # -*- coding: utf-8 -*-
- '''
- @Project :
- @File :workflow_node.py
- @IDE :Cursor
- @Author :LINGMIN
- @Date :2025/08/10 18:00
- '''
- import json
- import sys
- from foundation.logger.loggering import server_logger
- from foundation.utils.common import handler_err
- from langchain_core.messages import HumanMessage, AIMessage, SystemMessage
- from langchain_core.prompts import ChatPromptTemplate
- from foundation.agent.workflow.test_cus_state import TestCusState
- from foundation.agent.generate.test_intent import intent_identify_client
- from foundation.agent.test_agent import test_agent_client
- from foundation.schemas.test_schemas import FormConfig
- from foundation.agent.generate.model_generate import generate_model_client
- from foundation.utils.yaml_utils import system_prompt_config
- class TestWorkflowNode:
- """
- 工作流节点定义
- """
- def __init__(self):
- """初始化模型和会话管理"""
-
- def supervisor_agent(self , state: TestCusState):
- """
- 每个代理都与一个 Supervisor 代理通信(主管代理)。由 Supervisor 代理决定接下来应调用哪个代理
- :param state:
- :return:
- """
- session_id = state["session_id"]
- trace_id = state["trace_id"]
- user_input = state["user_input"]
- route_next = state.get("route_next")
-
- server_logger.info(trace_id=trace_id, msg=f"\n===================================[Supervisor].begin-route_next:{route_next}=============================")
-
- config = {
- "session_id": session_id
- }
- # 格式化输出,智能格式化输出
- route_next = intent_identify_client.recognize_intent(trace_id=trace_id , config=config , input=user_input)
- server_logger.info(trace_id=trace_id, msg=f"[Supervisor].intent_identify_client.recognize_intent:{route_next}")
- if route_next not in ["chat_box_generate" , "common_agent"]:
- route_next = "chat_box_generate"
-
- server_logger.info(trace_id=trace_id, msg=f"\n===================================[Supervisor].end-route_next:{route_next}=============================")
- return {
- "route_next": route_next
- }
- async def common_agent_node(self , state: TestCusState):
- """
- 通用代理节点
- :param state:
- :return:
- """
- session_id = state["session_id"]
- trace_id = state["trace_id"]
- user_input = state["user_input"]
- config_param = FormConfig(session_id=session_id)
- task_prompt_info = {"task_prompt": ""}
- response_content = await test_agent_client.handle_query(trace_id=trace_id , config_param=config_param,
- task_prompt_info=task_prompt_info,
- input_query=user_input, context=None)
- messages = [AIMessage(content=response_content, name="common_agent_node")]
- return {
- "messages": messages,
- "previous_agent": "common_agent",
- "route_next": "FINISH" # ✅ 直接结束流程
- }
-
- async def chat_box_generate(self , state: TestCusState) -> dict:
- """
- 模型生成节点(纯生成类问题)
- :param state:
- :return:
- """
- session_id = state["session_id"]
- trace_id = state["trace_id"]
- user_input = state["user_input"]
- task_prompt_info = state["task_prompt_info"]
- task_prompt_info["task_prompt"] = ""
- # 创建ChatPromptTemplate
- template = ChatPromptTemplate.from_messages([
- ("system", system_prompt_config['system_prompt']),
- ("user", user_input)
- ])
- task_prompt_info = {"task_prompt": template}
- response_content = await generate_model_client.get_model_generate_invoke(trace_id=trace_id , task_prompt_info=task_prompt_info)
- messages = [AIMessage(content=response_content , name="chat_box_generate")]
- server_logger.info(trace_id=trace_id, msg=f"【result】: {response_content}", log_type="chat_box_generate")
- return {
- "messages": messages,
- "route_next": "FINISH" # ✅ 直接结束流程
- }
|