编辑
2025-12-09
AI大模型
00

目录

一、安装工具
二、创建创建空白应用

一、安装工具

image.png

image.png

二、创建创建空白应用

image.png

添加提示词

js
针对用户的问题进行提示词优化,方便后面进行SQL查 询。必须输出一个严格的、格式正确的JSON对象,并且 只输出这个JSON,不能有任何其他解释、注释、 Markdown代码块标记或多余的文字。

image.png

然后加个aget策略 image.png

因为ollama没有Rerank类型,需要通过本地写一个python接口作为过度

python
from fastapi import FastAPI, HTTPException from pydantic import BaseModel import requests import json # 初始化 FastAPI 应用 app = FastAPI() # Ollama 配置 OLLAMA_BASE_URL = "http://192.168.31.22:11434" # 你的 Ollama 地址 OLLAMA_RERANK_MODEL = "gpt-oss:20b" # 你在 Ollama 中运行的重排模型名称 # 定义 Dify 重排请求体格式 class DifyRerankRequest(BaseModel): query: str documents: list[dict] # 格式:[{"content": "文档内容"}, ...] top_k: int = 5 # 定义 Dify 重排响应体格式 class DifyRerankResult(BaseModel): index: int relevance_score: float class DifyRerankResponse(BaseModel): results: list[DifyRerankResult] @app.post("/api/rerank", response_model=DifyRerankResponse) async def rerank(request: DifyRerankRequest): try: # 1. 构造 Ollama 的 prompt(让 BGE-Reranker 输出结构化评分) docs_content = [doc["content"] for doc in request.documents] prompt = f""" 请作为重排模型,根据查询文本与文档内容的相关性,为每个文档打分(0-1,保留4位小数)。 查询文本:{request.query} 文档列表:{json.dumps(docs_content, ensure_ascii=False)} 输出格式为 JSON 数组,仅包含分数,顺序与文档列表一致,不要其他内容。 """ # 2. 调用 Ollama 的 /api/generate 接口 ollama_response = requests.post( f"{OLLAMA_BASE_URL}/api/generate", json={ "model": OLLAMA_RERANK_MODEL, "prompt": prompt, "stream": False, # 关闭流式输出 "temperature": 0.0 # 固定温度,避免随机 }, timeout=30 ) ollama_response.raise_for_status() ollama_data = ollama_response.json() scores = json.loads(ollama_data["response"].strip()) # 3. 处理评分,按分数降序排序,取 top_k doc_with_scores = list(enumerate(scores)) # (index, score) doc_with_scores.sort(key=lambda x: x[1], reverse=True) top_docs = doc_with_scores[:request.top_k] # 4. 构造 Dify 格式的响应 results = [ DifyRerankResult(index=doc[0], relevance_score=doc[1]) for doc in top_docs ] return DifyRerankResponse(results=results) except Exception as e: raise HTTPException(status_code=500, detail=f"适配层错误:{str(e)}") if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000) # 中间件运行在 8000 端口

image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document