码农的召唤术:用FastAPI驯服Ollama和Deepseek-R1双头龙

背景介绍

这可真是个好日子,咱们要搞点大事情!将 Ollama 与 Deepseek-R1 集成到 Fastapi 中去构建一个智能聊天机器人。听起来有点高深?别怕,跟着这篇指南一步步来,轻松幽默地享受整个过程!

必备装备

首先,你需要准备好以下"装备":

  • 安装好 Ollama(当然啦,这是基本功!)
  • 下载 deepseek-r1 模型,并设置它在端口 11434 上运行
  • 准备好 Python 和 Fastapi 来创建 REST API
  • 记得要和 ollama-python 库好好配合哦!

快速入门

创建虚拟环境

第一步,打开你的终端,然后输入以下命令:

bash 复制代码
python3 -m venv venv  
source venv/bin/activate # On Windows use `venv\Scripts\activate`

安装依赖项

接下来,是时候安装所有依赖项了。使用 Python 和 Fastapi 来创建一个基本的 REST API。

复制代码
pip install fastapi uvicorn pydantic ollama requests

开发 API

创建 ollama_service.py

现在我们来写代码吧!在项目中创建一个名为 ollama_service.py 的文件,然后输入以下代码:

python 复制代码
# ollama_service.py
class OllamaService:
    def __init__(self, address: str, model: str):
        self._address = address
        self._model = model
        self.client = Client(host=self._address)

    async def chat(self, chat_messages: list) -> str:
        return ''.join([message['content'] for message in await self.client.chat(model=self._model, messages=chat_messages, stream=True)])
  • 代码块中的 client = Client(host=self._address) 是与 ollama 服务器交互的关键
  • client.chat(model=self._model, messages=chat_messages, stream=True) 则会将用户的问题传递给 ollama,这里 stream=True 表示它可以进行流响应。
创建 server.py

接下来,在项目中创建一个名为 server.py 的文件,并输入以下代码:

python 复制代码
from fastapi import FastAPI  
from pydantic import BaseModel  
from starlette.responses import StreamingResponse  
  
from ollama_service import OllamaService  
  
  
class ChatRequest(BaseModel):  
query: str  
  
  
version = "v1"  
app = FastAPI(version=version,  
title='REST API with Ollama and Deepseek')  
  
ai_service = OllamaService()  
  
  
@app.post("/chat/stream")  
async def chat_stream(request: ChatRequest):  
return StreamingResponse(ai_service.get_chat_stream(request.query), media_type="text/event-stream")

就这样,我们的 AI 聊天机器人基本框架就搭建好了!现在你可以开始测试它了。希望这篇指南能让你在构建过程中找到乐趣,而不是焦虑。加油哦!

PS:如果遇到任何问题或疑惑,请随时在评论区留言哦!

  • ChatRequest是个超级酷的 pydantic 模型,就像一个严格的请求守门员一样,确保一切井然有序。

  • StreamingResponse就像一位贴心的服务生,负责向你源源不断地提供美味的信息佳肴。

运行 API


现在我们要让这个 API 跑起来啦!只需要一条命令就可以搞定。是不是觉得超级简单?那就跟着小助手一起做吧!

lua 复制代码
uvicorn server:app --host 127.0.0.1 --port 8000

然后你可以通过 这个链接 访问 API 的文档页面,看看里面有什么好玩的东西等着你!(别急着跑开,还有很多精彩等着你哦)

测试 API


为了让我们的 API 更加完美,我们来写一个测试脚本,叫它 test_api.py 吧。这个小家伙的任务就是检查 API 是否能够流畅地提供信息。

ini 复制代码
import json  
import requests  
  
url = "http://localhost:8000/chat/stream"  
query = "Why is the sky blue?"  
payload = {'query': query}  
  
with requests.post(url, data=json.dumps(payload), stream=True) as req:  
for chunk in req.iter_content(256):  
print(chunk.decode('utf-8'), end='')

运行下面的命令让这个测试小家伙开始工作吧!你会发现它会像流水一样不断地给你反馈哦!

复制代码
python3 test_api.py

🎉 恭喜恭喜!你已经成功将 Python 和 FastAPI 与 Ollama 紧密结合起来,形成了一个强大的聊天机器人啦!

结论


使用 FastAPI 和 Ollama,你可以轻松地打造一个高效的 AI 聊天机器人。你可以通过添加身份验证、数据库存储或将其部署到云端来让它变得更加丰富和强大。

💡 下一步:不妨尝试不同的语言模型(LLM),或是集成一些新功能,甚至为更广泛的用户群体提供你的聊天机器人服务!

相关推荐
Georgeviewer10 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
GuWenyue10 小时前
分不清AI Workflow与Agent?3个实战案例彻底讲透,做AI应用不再踩选型坑
人工智能
彩讯股份30063411 小时前
彩讯股份与心洲科技签署战略合作协议,共建企业级模型后训练能力
人工智能·科技
迅易科技11 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
PNP Robotics11 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
GIR12311 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
绿算技术11 小时前
绿算技术亮相第十八届HPC AI中国年会,擘画AI基础设施全栈协同新图景
人工智能
Litluecat12 小时前
2026年7月22日科技热点新闻
人工智能·科技·新闻·每日·速览
To_OC12 小时前
别再傻傻分不清:Workflow 和 Agent 到底不是一回事
人工智能·agent·workflow
触底反弹12 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试