玩转大语言模型——使用langchain和Ollama本地部署大语言模型

server/2025/2/1 18:28:29/

系列文章目录

玩转大语言模型——使用langchain和Ollama本地部署大语言模型
玩转大语言模型——ollama导入huggingface下载的模型
玩转大语言模型——langchain调用ollama视觉多模态语言模型
玩转大语言模型——使用GraphRAG+Ollama构建知识图谱
玩转大语言模型——完美解决GraphRAG构建的知识图谱全为英文的问题
玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱
玩转大语言模型——本地部署带聊天界面deepseek R1的小白教程


文章目录

  • 系列文章目录
  • 前言
  • 下载安装Ollama
  • 安装模型
  • 测试模型
    • 使用终端调用
    • 使用request直接调用
    • 使用langchain调用Ollama接口
    • 使用langchain调用OpenAI接口


前言

Ollama 是一个开源的大型语言模型服务工具,旨在简化在本地运行大语言模型的过程,降低使用大语言模型的门槛。用户可以在自己的设备上运行模型,无需依赖云服务或远程服务器,保护了数据隐私。支持 Windows、macOS 和 Linux 等多种操作系统,方便不同用户安装使用。在本篇中将介绍Windows下使用Ollama进行本地大模型的部署。


下载安装Ollama

Ollama官网:https://ollama.com/
在这里插入图片描述
点击下载,选择符合自己系统的版本,点击下载
在这里插入图片描述
下载后按照提示安装即可

安装模型

回到官网,点击左上角的Models
在这里插入图片描述
点击后可以看到会有众多支持的模型
在这里插入图片描述
在本篇中笔者将使用Qwen2.5:7b,可以在搜索栏中搜索Qwen
在这里插入图片描述
在左侧可以选择模型大小,复制右侧的命令,打开命令行执行就可以直接下载并运行模型了。如果已经下载过,使用这个命令不会重复下载。如果只下载不运行可以使用命令ollama pull qwen2.5
在这里插入图片描述

测试模型

使用终端调用

打开命令行,执行命令

ollama run qwen2.5:7b

随后就可以在命令行交互式使用大语言模型
在这里插入图片描述

使用request直接调用

由于ollama支持OpenAI接口的调用,所以也可以像直接调用OpenAI一样,使用request方式调用,调用方式只要是ollama符合提供的API即可,API可以参考:https://ollama.readthedocs.io/api/
例如使用这一接口

curl http://localhost:11434/api/generate -d '{"model": "llama3.2","prompt": "Why is the sky blue?","stream": false
}'

可以使用requests调用的方式如下(下面的代码中改成了我们需要的内容)

import requests# 定义请求的URL
url = 'http://localhost:11434/api/generate'# 定义要发送的数据
data = {"model": "qwen2.5:7b","prompt": "你好","stream": False
}# 发送POST请求,使用json参数自动处理JSON数据
response = requests.post(url, json=data)# 检查响应状态码
if response.status_code == 200:# 解析并打印响应内容result = response.json()  # 假设服务器返回的是JSON格式的数据print(result)print(result['response'])
else:# 打印错误信息print(f"请求失败,状态码:{response.status_code}")print(response.text)  # 打印服务器返回的原始文本(可能是错误信息)

上述代码中的data字典中prompt对应的值就是我们所提的问题,在这里以你好为例,下同。

langchainOllama_89">使用langchain调用Ollama接口

langchain也是一个常用的大语言模型开发框架,其中提供了关于ollama调用的接口,在实例化参数中temperature代表的是生成回答的随机程度,取值在0~1,越大随机程度越高。如果是本地配置的ollamaurl_base参数可以省略。

from langchain_ollama import ChatOllamallm = ChatOllama(temperature=0,model="qwen2.5:7b",url_base="http://localhost:11434/v1/",
)
ans = llm.invoke("你好")
print(ans)
print(ans.content)

langchainOpenAI_104">使用langchain调用OpenAI接口

上边也提到了ollama会提供OpenAI的接口,所以也可以使用langchain为OpenAI提供的调用接口。不同的是openai_api_base要改为ollama地址http://localhost:11434/v1/openai_api_key可以为任意值,但不能为中文也不能为空。

from langchain_openai import ChatOpenAIllm = ChatOpenAI(temperature=0,model="qwen2.5:7b",openai_api_base="http://localhost:11434/v1/",openai_api_key="anything"
)
ans = llm.invoke("你好")
print(ans)
print(ans.content)

http://www.ppmy.cn/server/164130.html

相关文章

STM32外设应用

1. 什么是STM32外设? STM32微控制器集成了多种外设,这些外设可以帮助我们实现各种功能,比如控制LED灯、读取传感器数据、与其他设备通信等。常见的外设有GPIO(通用输入输出)、ADC(模数转换器)、…

软件工程概论试题一

一、单选 1.下面关于“发布测试”的观点错误的是( )。 A.系统开发团队不应该负责发布测试 B.发布测试是一个确认检查的过程 C.发布测试的目的是让系统供应商确信系统足够好可以使用了 D.发布测试通常采用白盒测试 正答:D 2.下图最有可能是()体系结构风格。 A. C…

Pyecharts之图表组合与布局优化

在数据可视化中,我们经常需要将多个图表组合在一起,以展示不同维度的数据或者进行对比分析。同时,合理的布局能够提升图表的可读性和用户体验。Pyecharts 提供了强大的组件和方法,让我们可以轻松实现图表的组合和布局优化。本篇将…

leetcode——搜索二维矩阵II(java)

编写一个高效的算法来搜索 *m* x *n* 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,1…

代码随想录_栈与队列

栈与队列 232.用栈实现队列 232. 用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 思路: 定义两个栈: 入队栈, 出队栈, 控制出入…

395. 至少有K个重复字符的最长子串

参考题解:https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/solutions/623991/jie-ben-ti-bang-zhu-da-jia-li-jie-di-gui-obla 递归含义:返回字符串s中至少有k个重复字符的最长子串递归终止条件:当s的…

洛谷P3372 【模板】线段树 1以及分块

【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m,分别表示该数列数字的个数和操作的总个数。 …

数据结构--差分数组(含题目)<基础入门>

定义:差分数组是一种处理数据的技巧,主要用于高效地执行区间修改操作。在一个数组中,如果需要频繁地对某个区间的所有元素执行相同的操作(如加或减一个常数),直接遍历并更新区间内的每个元素会非常耗时。差…