首页 > 其他分享 >使用 Ollama 部署本地 LLM:构建 AI REST API 的简易指南

使用 Ollama 部署本地 LLM:构建 AI REST API 的简易指南

时间:2024-10-20 22:46:39浏览次数:8  
标签:name AI FastAPI llama3 REST API Ollama response

最近已有不少大厂都在秋招宣讲,也有一些已在 Offer 发放阶段了。

节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。

针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了深入的讨论。

总结链接如下:

《大模型面试宝典》(2024版) 发布!

喜欢本文记得收藏、关注、点赞。


图片

利用Ollama本地LLM(大语言模型)搭建AI的REST API服务是一个实用的方法。下面是一个简单的工作流程。

1. 安装Ollama和LLMs

首先,在本地机器上安装Ollama和本地LLMs。Ollama可以帮助你轻松地在本地部署LLMs,并让它们更方便地处理各种任务。

安装 Ollama

图片

Ollama安装界面

图片

Ollama下载页面

图片

安装应用文件

为Ollama安装LLMs

ollama pull llama3
ollama run llama3

图片

下载并运行llama3

图片

在本地与llama3对话

Ollama命令

可用的命令:
  /set         设置会话变量
  /show        显示模型信息
  /bye         退出
  /?, /help    帮助命令

使用 "" 开始多行消息

测试Ollama

curl http://localhost:11434/api/generate -d '{  
  "model": "llama3",  
  "prompt": "为什么天空是蓝色的?",  
  "stream": true  
}'

图片

如果stream设置为false,响应将是一个完整的JSON对象。

curl http://localhost:11434/api/generate -d '{  
  "model": "llama3",  
  "prompt": "为什么天空是蓝色的?",  
  "stream": false  
}'

图片

2. 设置FastAPI

接下来,设置一个Python的FastAPI应用。FastAPI是一个现代、快速(高性能)的Web框架,基于标准的Python类型提示,支持Python 3.7及以上版本。它是构建稳健高效API的理想选择。

编写FastAPI的路由和端点,以便与Ollama服务器进行交互。这个过程包括发送请求给Ollama以处理任务,比如文本生成、语言理解或其他LLM支持的AI任务。以下是一个简单的代码示例(你也可以使用 Ollama Python库 来优化代码)。

from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
import json
import requests

app = FastAPI(debug=True)

class Itemexample(BaseModel):
    name: str
    prompt: str
    instruction: str
    is_offer: Union[bool, None] = None

class Item(BaseModel):
    model: str
    prompt: str

urls = ["http://localhost:11434/api/generate"]

headers = {
    "Content-Type": "application/json"
}

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.post("/chat/{llms_name}")
def update_item(llms_name: str, item: Item):
    if llms_name == "llama3":
        url = urls[0]
        payload = {
            "model": "llama3",
            "prompt": "为什么天空是蓝色的?",
            "stream": False
        }
        response = requests.post(url, headers=headers, data=json.dumps(payload))
        if response.status_code == 200:
            return {"data": response.text, "llms_name": llms_name}
        else:
            print("错误:", response.status_code, response.text)
            return {"item_name": item.model, "error": response.status_code, "data": response.text}
    return {"item_name": item.model, "llms_name": llms_name}

测试REST-API服务

curl --location 'http://127.0.0.1:8000/chat/llama3' \
--header 'Content-Type: application/json' \
--data '{
  "model": "llama3",
  "prompt": "为什么天空是蓝色的?"
}'

图片

通过API发送Curl请求

图片

API日志

3. 部署

当你对REST API的功能和性能感到满意后,可以将此服务部署到生产环境。这可能涉及将其部署到云平台、使用Docker进行容器化,或者在服务器上部署。

在这个简单的示例中,我们通过使用Ollama进行本地LLM部署并结合FastAPI构建REST API服务器,创建了一个免费的AI服务解决方案。你可以通过自己的训练数据对模型进行微调以实现定制用途(我们将在未来讨论)。

标签:name,AI,FastAPI,llama3,REST,API,Ollama,response
From: https://blog.csdn.net/2201_75499313/article/details/143100599

相关文章

  • Springboot启动失败问题:Application run failed(jdk原因)
    以下代码报错ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.2024-10-1921:56:55.234ERROR16584---[main]o.s.boot.SpringApplication:Applicationrunfailed......
  • 借势AI,构建智能化的自动漏洞修复系统
    构想经过多年的技术积累和对AI发展的深入研究,我最终实现了构建一套自动化漏洞修复系统的目标。该系统旨在自动检测和修复网站漏洞,提升整体安全性。可以参考前几天的文章demo版本:从梦想到现实:十年见证AI自动化漏洞修复的演变系统架构概述系统主要由以下几个模块组成:用户接......
  • 2024 ICPC Asia Taiwan Online Programming Contest题解记录
    比赛链接:https://codeforces.com/gym/105383/problemA.AnimalFarm找个最大pig,然后所有比他小的其他种类生物一直加就好了#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constllmod=1e9+7;llksm(llx,lly){ llans=1; while(y) { if(y&1)......
  • Rest-Assured 学习笔记
    Rest-Assured学习笔记Rest-Assured学习笔记安装Rest-Assured<dependencies><dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId><version>4.3.0</version>......
  • 惊!微商变革风暴来袭:开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序源码震撼登场!
    摘要:哇塞!你绝对不能错过!本文将带你深入探秘企业驱动下的两种超级微商模式——品牌微商与个人微商。深度剖析其独特魅力与发展路径,更有神秘武器开源AI智能名片2+1链动模式S2B2C商城小程序源码闪亮登场!为你揭示其在微商世界中的惊人应用价值与无限潜力,必将为微商行业带来一......
  • springboot044美容院管理系统(论文+源码)_kaic
     本科毕业设计论文题目:美容院管理系统设计与实现系   别:XX系(全称)专    业:软件工程班   级:软件工程15201学生姓名:学生学号:指导教师:导师1       导师22021年5月摘  要如今的信息时代,对信息的共享性,信息的流......
  • React Spring实战之API以及animated 组件的运用
    ReactSpring实战之API以及animated组件的运用小熊码农2024-04-20109 浏览#前端江河入海,知识涌动,这是我参与江海计划的第7篇。APIreact-spring库中与动画相关的API支持两种不同的使用渲染道具和react钩子的方法。接下来,我们将介绍reacthook的一些动画相关API:reac......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 磁力万合AI智能全自动挂机掘金脚本,曰进五张
    本项目介绍了一种通过自动化脚本在磁力万合平台上刷视频以产生广告搜易的方法。用户可以通过在小号上安装脚本,自动访问特定账号的视频内容,从而获得广告搜易。项目概述通过在小号上安装自动化脚本,用户可以让这些账号自动访问并播放指定的磁力万合账号视频,模拟正常用户观......