当前位置: 首页 > news >正文

huggingface模型下载,ollama+fastapi接口

模型下载

https://hf-mirror.com/

https://huggingface.co/

pip install -U huggingface_hub
import osos.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'os.system('huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local-dir E:\models\deepseek-r1-1.5B')

ollama运行

如果用ollama运行,则需要把模型转成gguf格式的。
在这里插入图片描述

API调用

import logging
import osimport requests
import uvicorn
from dotenv import load_dotenv, find_dotenv
from fastapi import FastAPI, HTTPException, Header, Depends
from fastapi.responses import StreamingResponse# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)app = FastAPI(title="Ollama API Service")OLLAMA_API_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "deepseek-r1:1.5b"load_dotenv(find_dotenv(".env"))API_KEY_CREDITS = {os.getenv("API_KEY"): 5}def verify_api_key(x_api_key: str = Header(None, alias="x_api_key")):credits = API_KEY_CREDITS.get(x_api_key, 0)if credits <= 0:raise HTTPException(status_code=401,detail="Invalid API key")return x_api_keydef generate_response(prompt: str):try:payload = {"model": MODEL_NAME,"prompt": prompt,"stream": False}response = requests.post(OLLAMA_API_URL,json=payload,timeout=600)if response.status_code == 200:return response.json()["response"]else:return f"Error: {response.text}"except requests.exceptions.ConnectionError:raise HTTPException(status_code=503,detail="Ollama service unavailable. Please ensure Ollama is running.")except Exception as e:raise HTTPException(status_code=500,detail=f"Internal server error: {str(e)}")@app.post("/generate")
async def generate(payload: dict, x_api_key: str = Depends(verify_api_key)):API_KEY_CREDITS[x_api_key] -= 1if "prompt" not in payload:raise HTTPException(status_code=400,detail="Missing 'prompt' in request body")result = generate_response(payload["prompt"])return {"response": result}@app.post("/generate-stream")
async def generate_stream(payload: dict):if "prompt" not in payload:raise HTTPException(status_code=400, detail="Missing 'prompt' in request body")def generate():with requests.post(OLLAMA_API_URL,json={"model": MODEL_NAME,"prompt": payload["prompt"],"stream": True},stream=True) as r:for line in r.iter_lines():if line:yield f"data: {line.decode()}\n\n"return StreamingResponse(generate(), media_type="text/event-stream")if __name__ == "__main__":logger.info("启动 Ollama API 服务...")uvicorn.run(app, host="0.0.0.0", port=8000)

.env文件

API_KEY = sk-123456

测试

curl --location 'http://localhost:8000/generate' \
--header 'Content-Type: application/json' \
--header 'x_api_key: sk-123456' \
--data '{"prompt": "1+2=?"}'

相关文章:

  • QML 自定义组件外观和行为
  • Cables为链上社区树立标杆:专注于实用性、用户主权与全球流动性
  • 蓝桥杯12. 日期问题
  • 13.编码器的结构
  • 深度学习-torch,全连接神经网路
  • 《实战AI智能体》——邮件转工单的AI自动化
  • 区块链如何成为智能城市的底层引擎?从数据透明到自动化治理
  • Cursor 生成java测试用例
  • Sa-Token使用指南
  • 微服务调用中的“大对象陷阱”:CPU飙高问题解析与优化
  • qt QGroupButton 实现两个QPushButton的互斥
  • 游戏引擎学习第232天
  • 解决 pip install tts 报错问题-—SadTalker的AI数字人视频—未来之窗超算中心
  • tomcat 的安装与启动
  • FPGA HR Bank如何支持ODELAY问题分析
  • text-decoration: underline;不生效
  • 土建施工员备考经验分享
  • 《软件设计师》复习笔记(14.3)——设计模式
  • Android12 ServiceManager::addService源码解读
  • Django 结合 Vue 实现简单管理系统的详解
  • 美关税政策冲击本土车企:福特7月涨价,通用汽车盈利预期下调
  • “80后”辽宁石油化工大学副校长杨占旭已任阜新市领导
  • “85后”雷海军已任新疆维吾尔自治区统计局局长
  • 浙江金华一副镇长被指殴打村民,镇党委称仍在调查核实
  • 中国三项文献遗产新入选《世界记忆名录》
  • 大外交|习近平时隔9年访柬,专家:中柬铁杆友谊的地区意义日渐凸显