Python本地LLM API项目逐步指南
Python本地LLM API项目逐步指南
感兴趣在本地机器上使用Python和轻量级工具框架运行大型语言模型(LLM)API吗? 本文将通过分步指南,帮助您搭建一个本地API,能够向下载到本地的LLM发送提示并获取响应——类似于ChatGPT,但完全在本地运行。
通过以下步骤,您将实现:
- 安装Ollama框架:用于本地运行开源LLM(如LLaMA、Gemma或Mistral)的用户友好工具
- 使用FastAPI构建轻量级REST API:通过HTTP请求实现用户与模型的交互
- 通过本地端点发送提示并获取近实时响应,无需依赖外部云服务
准备工作
建议阅读以下内容以熟悉相关概念:
- 《5个入门LLM的必备免费工具》
- 《大型语言模型10大核心概念解析》
- 《Python中使用Ollama的LLM初学者指南》
分步实现过程
本教程假设您已安装Python 3.9+版本并具备Python中阶理解能力。代码需在IDE(如VS Code)中实现,不适用于在线笔记本环境。
1. 安装Ollama并下载本地LLM
根据操作系统从官网下载Ollama后,在终端执行:
ollama run llama3
此命令将下载Llama 3模型(默认版本为llama3:latest)。首次下载耗时取决于网络带宽。下载完成后,终端将启动对话助手。
2. 创建VS Code项目
新建名为"local-llm-api"的文件夹,创建两个文件:
- requirements.txt:添加以下依赖- fastapi uvicorn requests
- main.py:暂留空
推荐设置虚拟环境:
- 通过Command+Shift+P打开命令面板
- 选择"Python: Create Environment" → "Venv"
- 选择Python 3.11版本
- 选择requirements.txt安装依赖
若安装失败,可在终端运行:
pip install fastapi uvicorn requests
3. 主程序代码
在main.py中添加以下代码:
from fastapi import FastAPI
from pydantic import BaseModel
import requests
import json
import uvicorn
import os
app = FastAPI()
class Prompt(BaseModel):
    prompt: str
@app.post("/generate")
def generate_text(prompt: Prompt):
    try:
        ollama_host = os.getenv("OLLAMA_HOST", "http://localhost:11434")
        ollama_model = os.getenv("OLLAMA_MODEL", "llama3:latest")
        
        response = requests.post(
            f"{ollama_host}/api/generate",
            json={"model": ollama_model, "prompt": prompt.prompt},
            stream=True,
            timeout=120
        )
        response.raise_for_status()
        
        output = ""
        for line in response.iter_lines():
            if line:
                data = line.decode("utf-8").strip()
                if data.startswith("data: "):
                    data = data[len("data: "):]
                if data == "[DONE]":
                    break
                try:
                    chunk = json.loads(data)
                    output += chunk.get("response") or chunk.get("text") or ""
                except json.JSONDecodeError:
                    print(f"Warning: Could not decode JSON from line: {data}")
                    continue
        
        return {"response": output.strip() or "(Empty response from model)"}
    
    except requests.RequestException as e:
        return {"error": f"Ollama request failed: {str(e)}"}
if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=False)
代码关键解析:
- app = FastAPI():创建基于REST服务的Web API
- class Prompt(BaseModel):定义接收提示词的JSON输入架构
- @app.post("/generate"):定义API端点处理函数
- 核心请求代码向本地LLM发送提示词(需确保模型名称与下载一致)
- 流式响应处理确保输出可读性
4. 运行与测试API
运行python main.py后,终端将显示:
INFO: Uvicorn running on http://127.0.0.1:8000
访问http://127.0.0.1:8000/docs打开FastAPI文档界面:
- 展开POST/generate框并点击"Try it out"
- 在JSON参数中替换默认提示词(例如:{"prompt": "解释量子计算"})
- 点击"Execute"获取模型响应
进阶改进建议
- 使用Streamlit构建前端界面消费FastAPI接口
- 探索针对特定领域(如营销、保险、物流)的微调模型应用
总结
本文逐步演示了如何使用Ollama本地模型和FastAPI框架,通过REST服务接口搭建本地大型语言模型API,实现完全在本地运行的模型推理功能。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
公众号二维码

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号