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

ollama+FastAPI部署后端大模型调用接口

ollama+FastAPI部署后端大模型调用接口

记录一下开源大模型的后端调用接口过程

一、ollama下载及运行

1. ollama安装

ollama是一个本地部署开源大模型的软件,可以运行llama、gemma、qwen等国内外开源大模型,也可以部署自己训练的大模型

ollama国内地址

下载安装,并运行

PixPin_2025-01-06_10-53-53

ollama图标出现在折叠的任务栏中,就算安装成功了

2. 下载并运行大模型

在ollama管理的模型中,找到自己想要部署的大模型,以qwen2.5-7B大模型为例

ollama启动状态下,终端执行如下命令:

ollama run qwen2.5

image-20250106105916762

如果是首次运行,会先下载,下载之后,就可以运行起来了

PixPin_2025-01-06_11-01-29

此时,已经可以在终端访问大模型了

二、后端接口调用

ollama运行的本地大模型端口号为11434,可以在线调用

有多种方式可以实现大模型的后端调用,只要是后端语言,都可以

因为我的后端有其他深度学习模型要调用,所以我选用的后端语言是python,调用大模型时,自然也选择了python,接口框架使用的是fastapi

后端调用程序如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:HP
# datetime:2024/11/11 8:43
from fastapi import HTTPException, APIRouter
import requests
import json
from .inputData import GenerateRequestbig_model_api = APIRouter()# 定义 Ollama API 的 URL
OLLAMA_API_URL = "http://localhost:11434/v1/completions"  # Ollama 默认运行在本地 11434 端口@big_model_api.post('/llama')
async def generate_text(request: GenerateRequest):# 设置请求头和请求数据headers = {"Content-Type": "application/json"}data = {"model": request.model,"prompt": request.prompt,"temperature": request.temperature,"max_tokens": request.max_tokens,}# 发送请求给 Ollama APIresponse = requests.post(OLLAMA_API_URL, headers=headers, data=json.dumps(data))# 检查响应状态并处理结果if response.status_code == 200:result = response.json()return {"generated_text": result.get("choices")[0].get("text")}else:raise HTTPException(status_code=response.status_code, detail=response.text)

这里使用的是分布式路由接口,在fastapi的主程序中加入这个名为big_model_api的APIRouter实例,就可以在前端访问这个接口了

当然,需要配合pydantic定义好请求数据的结构,GenerateRequest类定义如下:

# 数据模型,用于接收请求数据
class GenerateRequest(BaseModel):model: str = "qwen2.5"  # 模型名称prompt: str  # 输入的 prompttemperature: float = 0.7  # 温度参数,默认为 0.7max_tokens: int = 1000  # 最大生成的 token 数,默认为 200

解释一下:

  • 默认调用的模型是qwen2.5,如果传递其他参数,就可以调用其他模型
  • prompt也就是提示词,就是前端传给后端的问题
  • temperature不知道有啥用
  • max_token其实就是支持返回多长的字符,这个值越大,消耗的资源越大

后端服务启动后,前端正常传递对话内容,请求后端接口,就可以调用大模型进行对话了

C4B46D06-F606-4e7b-BA44-DC491515A708

image-20250106112304865

如果有自己训练的模型,也可以参考这种方式部署上线,但是ollama如何来调用,还需要单独研究

http://www.lryc.cn/news/517130.html

相关文章:

  • BERT:深度双向Transformer的预训练用于语言理解
  • 【AI-23】深度学习框架中的神经网络3
  • 网站运营数据pv、uv、ip
  • 高阶知识库搭建实战五、(向量数据库Milvus安装)
  • 【TR369】RTL8197FH-VG+RTL8812F增加TR369 command节点
  • FPGA实现UART对应的电路和单片机内部配合寄存器实现的电路到底有何区别?
  • 数据库模型全解析:从文档存储到搜索引擎
  • 【Java基础】Java异常捕捉,throws/throw、finally、try、catch关键字的含义与运用
  • Android Studio 安装配置(个人笔记)
  • 计算机网络——数据链路层-介质访问控制
  • pytest日志显示
  • 【信息系统项目管理师】第15章:项目风险管理过程详解
  • Diffusers 使用 LoRA
  • 云安全博客阅读(二)
  • SpringCloud系列教程:微服务的未来(六)docker教程快速入门、常用命令
  • Vue 快速入门:开启前端新征程
  • UVM:uvm_component methods configure
  • LLM 训练中存储哪些矩阵:权重矩阵,梯度矩阵,优化器状态
  • 大模型思维链推理的进展、前沿和未来分析
  • NLP 技术的突破与未来:从词嵌入到 Transformer
  • 嵌入式中QT实现文本与线程控制方法
  • 云备份项目--服务端编写
  • Node.js——fs(文件系统)模块
  • SAP BC 同服务器不同client之间的传输SCC1
  • CentOS: RPM安装、YUM安装、编译安装(详细解释+实例分析!!!)
  • linux音视频采集技术: v4l2
  • MySQL使用navicat新增触发器
  • voice agent实现方案调研
  • TCP通信原理学习
  • Three.js 基础概念:构建3D世界的核心要素