Phi-3-mini-4k-instruct-gguf步骤详解:如何导出API接口供前端项目直接调用
Phi-3-mini-4k-instruct-gguf步骤详解如何导出API接口供前端项目直接调用1. 准备工作与环境检查在开始导出API接口前我们需要确保Phi-3-mini-4k-instruct-gguf模型已经正确部署并运行。以下是基础环境检查步骤验证服务状态supervisorctl status phi3-mini-4k-instruct-gguf-web正常状态应显示为RUNNING检查健康接口curl http://127.0.0.1:7860/health预期返回{status:OK}确认模型路径ls -lah /root/ai-models/microsoft/Phi-3-mini-4k-instruct-gguf应能看到q4版本的GGUF模型文件2. 理解现有Web接口当前Web界面通过FastAPI暴露了以下核心接口POST /generate接收JSON格式的请求包含{ prompt: 你的问题或指令, max_tokens: 256, temperature: 0.2 }响应格式{ response: 模型生成的文本, status: success }3. 创建专用API端点3.1 修改FastAPI应用代码找到Web服务的主文件通常为main.py或app.py添加新的API路由from fastapi import FastAPI, APIRouter from pydantic import BaseModel # 新增请求模型 class APIRequest(BaseModel): prompt: str max_tokens: int 256 temperature: float 0.2 stream: bool False # 新增流式输出支持 # 创建专用路由 api_router APIRouter() api_router.post(/v1/chat/completions) async def api_generate(request: APIRequest): # 这里调用原有的生成逻辑 result await generate_text( request.prompt, request.max_tokens, request.temperature ) # 返回OpenAI兼容格式 return { choices: [{ message: { role: assistant, content: result[response] } }] }3.2 添加跨域支持在前端调用时需要处理跨域问题修改FastAPI初始化代码from fastapi.middleware.cors import CORSMiddleware app FastAPI() # 添加CORS中间件 app.add_middleware( CORSMiddleware, allow_origins[*], # 生产环境应限制为具体域名 allow_methods[POST], allow_headers[*] )4. 前端调用示例4.1 使用Fetch API调用async function callPhi3API(prompt) { const response await fetch(http://你的服务器地址:7860/v1/chat/completions, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ prompt: prompt, max_tokens: 512, temperature: 0.3 }) }); const data await response.json(); return data.choices[0].message.content; } // 使用示例 callPhi3API(请用中文介绍你自己).then(console.log);4.2 使用axios调用import axios from axios; const phi3Client axios.create({ baseURL: http://你的服务器地址:7860, }); export async function generateText(prompt) { const response await phi3Client.post(/v1/chat/completions, { prompt, max_tokens: 256, temperature: 0.2 }); return response.data.choices[0].message.content; }5. 接口安全与限流5.1 添加API密钥验证修改FastAPI路由from fastapi import Depends, HTTPException, status from fastapi.security import APIKeyHeader API_KEY_NAME X-API-KEY api_key_header APIKeyHeader(nameAPI_KEY_NAME, auto_errorFalse) async def get_api_key(api_key: str Depends(api_key_header)): if api_key ! 你的密钥: raise HTTPException( status_codestatus.HTTP_401_UNAUTHORIZED, detailInvalid API Key ) return api_key api_router.post(/v1/chat/completions) async def api_generate( request: APIRequest, api_key: str Depends(get_api_key) ): # 原有逻辑...5.2 实现基础限流使用FastAPI的中间件添加速率限制from fastapi import Request from fastapi.middleware import Middleware from slowapi import Limiter from slowapi.util import get_remote_address limiter Limiter(key_funcget_remote_address) app.state.limiter limiter app.middleware(http) async def rate_limit_middleware(request: Request, call_next): # 每分钟10次限制 if await limiter.check(f10/minute, request): return await call_next(request) return JSONResponse( {detail: Too many requests}, status_code429 )6. 部署与测试6.1 重启服务使更改生效supervisorctl restart phi3-mini-4k-instruct-gguf-web6.2 测试API接口使用curl测试新接口curl -X POST \ http://localhost:7860/v1/chat/completions \ -H Content-Type: application/json \ -d { prompt: 请用中文介绍你自己, max_tokens: 128 }预期响应{ choices: [ { message: { role: assistant, content: 我是Phi-3-mini-4k-instruct模型擅长处理各种文本生成任务... } } ] }7. 总结与建议通过以上步骤我们成功将Phi-3-mini-4k-instruct-gguf模型的文本生成能力封装为标准API接口前端项目可以通过简单的HTTP调用直接使用。以下是关键要点回顾接口设计遵循OpenAI兼容格式降低前端集成难度安全措施API密钥验证基础限流保护服务稳定性跨域支持确保前端应用可以跨域调用性能建议生产环境建议配置Nginx反向代理考虑添加缓存层减少重复计算监控API调用量和响应时间实际部署时可以根据项目需求调整添加更详细的日志记录实现更精细的权限控制支持流式输出(SSE)提升用户体验获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。