通过uvicorn启动一个fastapi web服务,供用户请求不同模型的调用;

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import requests

app = FastAPI()

# 定义请求模型
class ChatRequest(BaseModel):
    prompt: str
    #model: str = "deepseek-r1:1.5b"
    model: str = "deepseek-V3.1:671b-cloud"
    
# 允许跨域请求(根据需要配置)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],# # 允许所有域(生产环境应限制)
    allow_methods=["*"],#allow_methods=["POST"],  # 仅开放POST请求
    allow_headers=["*"],#allow_headers=["Content-Type"]  # 控制可接收头类型
)
@app.post("/api/chat")
async def chat(request: ChatRequest):
    print(request)##调用本地模型
    ollama_url= "http://localhost:11434/api/generate"
    data = {
        "model": request.model,
        "prompt": request.prompt,
        "stream": False
    }
    response = requests.post(ollama_url, json=data)
    if response.status_code== 200:
        return {"response": response.json()["response"]}
    else:
        return {"error": "Failed to get response from Ollama"}, 500

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000, log_level="debug")#workers=4,    # 启动 4 个进程处理并发请求
    #reload=True,        # 开发模式:代码修改后自动重启
    #log_level="debug",  # 输出详细日志
    #timeout_keep_alive=30  # 连接保持时间(秒)

    

import requests
response = requests.post(
    "http://localhost:8000/api/chat",
    #json={"prompt": "你好,请介绍一下你自己"}
    json={"prompt": "你好,请介绍一下你自己", "model":"phi3:mini"}
    
)

print(response.json())

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐