from langchain_core.messages import AIMessageChunk, HumanMessage from agent.study import question_agent, knowledge_agent, exam_agent from schemas.agent import QueryQuestionRequest, QueryKnowledgeRequest, QueryExamRequest def generate_question_agent(query: QueryQuestionRequest): try: user_msg = f"学习内容:\n{query.message}" # 流式调用Agent for chunk, metadata in question_agent.stream( {"messages": [HumanMessage(content=user_msg)]}, stream_mode="messages" ): if isinstance(chunk, AIMessageChunk): if isinstance(chunk, AIMessageChunk) and chunk.content: yield chunk.content except Exception as e: print(f"\n[错误]: {str(e)}") yield "信息检索失败,请重新输入问题提问" def generate_knowledge_agent(query: QueryKnowledgeRequest): try: user_msg = f"学科:{query.subject},模块:{query.module}, 名称:{query.name}" # 流式调用Agent for chunk, metadata in knowledge_agent.stream( {"messages": [HumanMessage(content=user_msg)]}, stream_mode="messages" ): if isinstance(chunk, AIMessageChunk): if isinstance(chunk, AIMessageChunk) and chunk.content: yield chunk.content except Exception as e: print(f"\n[错误]: {str(e)}") yield "信息检索失败,请重新输入问题提问" def generate_exam_agent(query: QueryExamRequest): try: user_msg = f"学科:{query.subject},题目总数:{query.total}" # 流式调用Agent for chunk, metadata in exam_agent.stream( {"messages": [HumanMessage(content=user_msg)]}, stream_mode="messages" ): if isinstance(chunk, AIMessageChunk): if isinstance(chunk, AIMessageChunk) and chunk.content: yield chunk.content except Exception as e: print(f"\n[错误]: {str(e)}") yield "信息检索失败,请重新输入问题提问"