| | |
| | | import json |
| | | import uuid |
| | | |
| | | from fastapi import Depends, APIRouter, Query, HTTPException |
| | |
| | | 'reference': reference |
| | | }) |
| | | last_question = None |
| | | reference_index += 1 # 只有在添加了assistant的回答后,索引才增加 |
| | | return JSONResponse(status_code=200, content={"code": 200, "log": combined_logs}) |
| | | reference_index += 1 |
| | | return JSONResponse(status_code=200, content={"code": 200, "data": combined_logs}) |
| | | else: |
| | | |
| | | return JSONResponse(status_code=200, content={"code": 400, "message": "Invalid result structure"}) |
| | |
| | | try: |
| | | token = get_bisheng_token(db, current_user.id) |
| | | result = await bisheng_service.get_session_log(token, agent_id, conversation_id) |
| | | if 'session_log' in result: |
| | | combined_logs = [] |
| | | last_question = None |
| | | for session in result['session_log']: |
| | | if session['role'] == 'question': |
| | | last_question = session['message'] |
| | | elif session['role'] == 'answer' and last_question: |
| | | combined_logs.append({ |
| | | 'question': last_question, |
| | | 'answer': session['message'] |
| | | }) |
| | | last_question = None |
| | | return JSONResponse(status_code=200, content={"code": 200, "log": combined_logs}) |
| | | else: |
| | | return JSONResponse(status_code=200, content={"code": 400, "message": "Invalid result structure"}) |
| | | combined_logs = [] |
| | | last_question = None |
| | | |
| | | for session in result: |
| | | message = session['message'] |
| | | |
| | | # 判断message是字符串还是json 对象,如果是json取其中的question字段,或者report_name字段赋值给message |
| | | try: |
| | | message_json = json.loads(message) |
| | | if 'question' in message_json: |
| | | message = message_json['question'] |
| | | elif 'query' in message_json: |
| | | message = message_json['query'] |
| | | elif 'report_name' in message_json: |
| | | message = message_json['report_name'] |
| | | except json.JSONDecodeError: |
| | | pass |
| | | |
| | | if session['role'] == 'question': |
| | | last_question = message |
| | | elif session['role'] == 'answer' and last_question: |
| | | combined_logs.append({ |
| | | 'question': last_question, |
| | | 'answer': message |
| | | }) |
| | | last_question = None |
| | | return JSONResponse(status_code=200, content={"code": 200, "data": combined_logs}) |
| | | except Exception as e: |
| | | raise HTTPException(status_code=500, detail=str(e)) |
| | | else: |
| | |
| | | files = data.get("files", []) |
| | | steps = data.get("intermediate_steps", "") |
| | | msg = data.get("message", "") |
| | | category = data.get("category", "") |
| | | |
| | | if len(files) != 0 or (steps and last_message == "step") or msg or data["type"] == "close": |
| | | if len(files) != 0 or (msg and category != "answer") or data["type"] == "close": |
| | | if data["type"] == "close": |
| | | t = "close" |
| | | else: |
| | | t = "stream" |
| | | process_files(files, agent_id) |
| | | result = {"step_message": steps, "message": msg, "type": t, "files": files} |
| | | result = {"message": msg, "type": t, "files": files} |
| | | await websocket.send_json(result) |
| | | print(f"Forwarded to client, {chat_id}: {result}") |
| | | elif steps and last_message == "step": |
| | | result = {"step_message": steps, "type": "stream", "files": files} |
| | | await websocket.send_json(result) |
| | | |
| | | last_message = "message" if msg else "step" |
| | | |
| | |
| | | task.cancel() |
| | | try: |
| | | await task |
| | | except asyncio.CancelledError: |
| | | except asyncio.CancelledError as e: |
| | | print(f"asyncio CancelledError: {e}") |
| | | pass |
| | | |
| | | except WebSocketDisconnect as e: |
| | |
| | | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB |
| | | -----END PUBLIC KEY----- |
| | | PRIVATE_KEY: str |
| | | fetch_sgb_agent: 报告生成 |
| | | fetch_fwr_agent: 知识问答,文档智能,智能问答 |
| | | HASH_SUB_KEY: bZQDT7xZ8KkGfdnwbbxy4Ovk1Ci8AHJh7NEC9mwnLhk= |
| | | fetch_sgb_agent: 报告生成,文档智能 |
| | | fetch_fwr_agent: 知识问答,智能问答 |
| | |
| | | response = await client.get(url, headers=headers) |
| | | response.raise_for_status() |
| | | data = self._check_response(response) |
| | | session_log = { |
| | | "session_log": [ |
| | | session_log = [ |
| | | { |
| | | "message": message.get("intermediate_steps"), |
| | | "message": message.get("message"), |
| | | "role": message.get("category"), |
| | | "ts": message.get("create_time") |
| | | } |
| | | for message in data |
| | | ], |
| | | } |
| | | ] |
| | | |
| | | # 把session_log 按ts 升序排序 |
| | | session_log.sort(key=lambda x: x['ts']) |
| | | return session_log |
| | | |
| | | async def variable_list(self, token: str, agent_id: str) -> list: |
| | |
| | | initial_agents = [ |
| | | ('80ee430a-e396-48c4-a12c-7c7cdf5eda51', 1, '报告生成', 'BISHENG', 'report'), |
| | | ('basic_excel_merge', 2, '报表合并', 'BASIC', 'excelMerge'), |
| | | ('bfd090d589d811efb3630242ac190006', 4, '文档智能', 'RAGFLOW', 'documentChat'), |
| | | ('bfd090d589d811efb3630242ac190006', 4, '文档智能', 'BISHENG', 'report'), |
| | | ('da3451da89d911efb9490242ac190006', 3, '知识问答', 'RAGFLOW', 'knowledgeQA'), |
| | | ('e96eb7a589db11ef87d20242ac190006', 5, '智能问答', 'RAGFLOW', 'chat') |
| | | ] |