# 列举导入模块 import argparse from pathlib import Path import sys sys.path.append(Path(__file__).resolve().parent.parent.parent.parent.parent.as_posix()) from utils.request import Request parser = argparse.ArgumentParser() parser.add_argument("--question", required=True, type=str, help="检索语句") args = parser.parse_args() # 实例请求客户端 request = Request(cache_enabled=True) response = request.post( url="http://127.0.0.1:19828/api/v1/projects/current/search", # LLM wiki 提供的搜索接口 headers={ "Content-Type": "application/json", }, json={ "query": args.question, "topK": 10, "includeContent": True, # 包含文档内容 }, # 若客户端启用语义搜索则接口默认开启混合搜索 ) if not response.get("ok") or not response.get("results"): print("未搜索到相关资料。") materials = [] # 资料 for i, result in enumerate(response["results"], 1): # 资料标题 title = result.get("title", f"资料{i}") # 若资料内容为空则跳过 if not (content := result.get("content", "").strip()): continue materials.append(f"[{i}] {title}\n{content}") try: print("\n\n---\n\n".join(materials)) except UnicodeEncodeError: sys.stdout.buffer.write( ("\n\n---\n\n".join(materials) + "\n").encode("utf-8", errors="replace") )