@@ -1295,3 +1295,66 @@ async def get_all_embedding_models_status(current_user: User = Depends(get_admin
12951295 except Exception as e :
12961296 logger .error (f"获取所有embedding模型状态失败: { e } , { traceback .format_exc ()} " )
12971297 return {"message" : f"获取所有embedding模型状态失败: { e } " , "status" : {"models" : {}, "total" : 0 , "available" : 0 }}
1298+
1299+
1300+ # =============================================================================
1301+ # === AI 辅助功能分组 ===
1302+ # =============================================================================
1303+
1304+
1305+ @knowledge .post ("/generate-description" )
1306+ async def generate_description (
1307+ name : str = Body (..., description = "知识库名称" ),
1308+ current_description : str = Body ("" , description = "当前描述(可选,用于优化)" ),
1309+ current_user : User = Depends (get_admin_user ),
1310+ ):
1311+ """使用 LLM 生成或优化知识库描述
1312+
1313+ 根据知识库名称和现有描述,使用 LLM 生成适合作为智能体工具描述的内容。
1314+ """
1315+ from src .models import select_model
1316+
1317+ logger .debug (f"Generating description for knowledge base: { name } " )
1318+
1319+ # 构建提示词
1320+ if current_description .strip ():
1321+ prompt = textwrap .dedent (f"""
1322+ 请帮我优化以下知识库的描述。
1323+
1324+ 知识库名称: { name }
1325+ 当前描述: { current_description }
1326+
1327+ 要求:
1328+ 1. 这个描述将作为智能体工具的描述使用
1329+ 2. 智能体会根据知识库的标题和描述来选择合适的工具
1330+ 3. 所以描述需要清晰、具体,说明该知识库包含什么内容、适合解答什么类型的问题
1331+ 4. 描述应该简洁有力,通常 2-4 句话即可
1332+ 5. 不要使用 Markdown 格式
1333+
1334+ 请直接输出优化后的描述,不要有任何前缀说明。
1335+ """ ).strip ()
1336+ else :
1337+ prompt = textwrap .dedent (f"""
1338+ 请为以下知识库生成一个描述。
1339+
1340+ 知识库名称: { name }
1341+
1342+ 要求:
1343+ 1. 这个描述将作为智能体工具的描述使用
1344+ 2. 智能体会根据知识库的标题和描述来选择合适的工具
1345+ 3. 所以描述需要清晰、具体,说明该知识库可能包含什么内容、适合解答什么类型的问题
1346+ 4. 描述应该简洁有力,通常 2-4 句话即可
1347+ 5. 不要使用 Markdown 格式
1348+
1349+ 请直接输出描述,不要有任何前缀说明。
1350+ """ ).strip ()
1351+
1352+ try :
1353+ model = select_model ()
1354+ response = await asyncio .to_thread (model .call , prompt )
1355+ description = response .content .strip ()
1356+ logger .debug (f"Generated description: { description } " )
1357+ return {"description" : description , "status" : "success" }
1358+ except Exception as e :
1359+ logger .error (f"生成描述失败: { e } , { traceback .format_exc ()} " )
1360+ raise HTTPException (status_code = 500 , detail = f"生成描述失败: { e } " )
0 commit comments