Ollama在Windows安装,使用,简单调用API

news2024/11/15 15:45:26

一、安装ollama

1、安装

在Windows本地安装ollama,官方网页:https://ollama.com/download/windows

下载完安装包,安装就好,默认应该是C盘。应该是没办法改,如果有小伙伴能改,也请告知一下。

2、验证安装

出现如下所示,安装成功

3、设置模型拉取地址

模型一般很大,避免都存在C盘,进行更改地址,下述我多有引用。

新建一个环境变量:

变量名:OLLAMA_MODELS

变量值:D:\Ollama  //这里写你打算放大模型的位置

配置好环境变量,重启电脑!!!

或者

setx OLLAMA_MODELS "D:\ollama_model"

根据自己需要,也可以多看几篇文章

二、使用ollama

1、拉取模型

拉取模型,可以参考官网GitCode - 全球开发者的开源社区,开源代码托管平台

我拉取的是最基础的,如下图

上述就是拉取成功了,成功后在命令行中就可以简单使用。

 

2、在python上调用

我这里很简单。

我是自己建立了一个python=3.10的虚拟环境

接着要安装相应的库,必须的库是

pip install ollama

接着创建自己的文件,其中

model='llama3.1'

改为自己的模型 

import ollama

# 生成回答并逐字符打印
stream = ollama.chat(
    model='llama3.1',
    messages=[{'role': 'user', 'content': '天为什么是绿的'}],
    stream=True,
)

for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

def test_ollama_chat():
    # Test case 1: Test with a simple question
    messages1 = [{'role': 'user', 'content': '天为什么是绿的'}]
    stream1 = ollama.chat(model='llama3.1', messages=messages1, stream=True)
    response_content = ""
    for chunk in stream1:
        response_content += chunk['message']['content']
    # 检查回答是否合理
    assert "绿色" in response_content or "为什么" in response_content
    print("All test cases pass")

test_ollama_chat()

输出在终端,结果为

 大家可以自行更改 引号中的问题,来尝试

'content': '天为什么是绿的'

这个只是初试,大家可以自行优化代码 .

再给一个测试案例,大家再自己优化

import ollama
def generate_response(model_name, prompt):
    # 生成回答并逐字符打印
    stream = ollama.chat(
        model=model_name,
        messages=[{'role': 'user', 'content': prompt}],  # 提供具体的问题或提示
        stream=True,
    )

    response = ""
    for chunk in stream:
        response += chunk['message']['content']
        print(chunk['message']['content'], end='', flush=True)

    return response
def test_ollama_chat():
    # Test case 1: Test with a simple Chinese question
    model_name = 'llama3.1'
    prompt = '为什么天空是蓝色的?'
    expected_keywords = ['绿色', '散射']

    response = generate_response(model_name, prompt)

    # 检查回答是否包含预期的关键词
    if all(keyword in response for keyword in expected_keywords):
        print("\nTest case 1 passed.")
    else:
        print(f"\nTest case 1 failed. Response was: {response}")

    # Test case 2: Test with an English question
    prompt = 'Why is the sky blue?'
    expected_keywords = ['blue', 'scatter']

    response = generate_response(model_name, prompt)

    # 检查回答是否包含预期的关键词
    if all(keyword in response.lower() for keyword in expected_keywords):
        print("\nTest case 2 passed.")
    else:
        print(f"\nTest case 2 failed. Response was: {response}")


# 运行测试
test_ollama_chat()

输出的结果如下图(应该是模型或者什么原因,反复提问的话,回复会有差别,我选取其中一个)

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试 - 数据单元的变量替换 - 分治、递归(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

基于yolov8+deepsort+gradio实现目标追踪演示

【效果展示】 【测试环境】 ultralytics8.2.95 gradio4.26.0 torch1.9.0cu111 理论上支持最新ultralytics版本 【实现部分代码】 with gr.Blocks() as demo:with gr.Tab("追踪"):# 使用Markdown显示文本信息,介绍界面的功能gr.Markdown(""…

linux固定串口别名

最近项目功能要求,需要将插入设备的串口设备占用的端口号固定住,这里记录一下设置过程方便以后查阅。 linux固定串口别名 配置过程相关补充 配置过程 列出当前插入USB端口的设备: lsusb查看当前设备的端口号: ls dev/查看当前设…

无人机飞手培训及巡检、吊运等飞行服务一体化技术详解

在无人机行业日益兴起的背景下,培养专业、合格的无人机飞手成为首要任务。飞手培训基础涵盖理论学习与安全意识建立两大方面。理论学习包括无人机基础知识(如无人机类型、结构、原理)、航空法规(如民用无人驾驶航空器实名制登记管…

旧衣回收小程序搭建,开发功能优势

随着人们生活水平、消费水平的提高,在日常生活中产生了大量的限制物品,为了减少浪费,越来越多的人开始重视环保回收。旧衣物作为一种新型的回收方式,也逐渐得到了大众的关注,旧衣物回收市场发展规模也在持续上升&#…

Certbot自动申请并续期https证书

Certbot自动申请并续期https证书 一、 安装 Certbot:使用命令安装 Certbot: dnf install certbot python3-certbot-nginx获取 SSL 证书:运行 Certbot 命令来获取并安装 SSL 证书。 示例命令,替换其中的域名和路径信息&#xff1a…

PHP API 框架:构建高效API的利器【电商API接口】

在当今快速发展的互联网时代,API(应用程序编程接口)已成为连接不同应用程序和服务的关键。PHP,作为一种流行的服务器端脚本语言,提供了多种强大的框架来简化API的开发。本文将介绍PHP API框架的重要性,以及…

java并发编程笔记 之 线程和进程

文章目录 前言线程线程优先级和时间片创建多线程及运行线程的状态 进程查看进程的命令进程的通信方式 线程和进程的区别从关系上疑问集锦 前言 并发 1、并发是指在同一时间段内,计算机系统能够处理多个任务的能力。 2、在并发编程中,我们可以理解为多个…

chapter17-多线程基础——(自定义泛型)——day20

580-程序进程线程 581-并发并行 并发和并行也可以同时进行 582-继承Thread创建线程 583-多线程机制 主线程和子线程交替执行 单核:两个线程并发 多核:两个线程并行 主线程结束,不是说进程就结束,进程要等所有线程结束 584-为什…

模型Alignment之RLHF与DPO

1. RLHF (Reinforcement Learning from Human Feedback) RLHF 是一种通过人类反馈来强化学习的训练方法,它能够让语言模型更好地理解和执行人类指令。 RLHF 的三个阶段 RLHF 的训练过程一般分为三个阶段: 监督微调(Supervised Fine-Tuning,…

认知杂谈82《跳出信息茧房,持续精进》

内容摘要: 互联网时代,信息丰富,但便捷性削弱了我们的好奇心。互联网是双刃剑,快速获取知识的同时,也让我们陷入“信息茧房”,限制视野。 好奇心减少,部分原因是互联网的“懒惰效应”&#xff0…

国家标准和团体标准有什么区别?

国家标准和团体标准的区别主要体现在以下几个方面: 1. 制定标准的主体不同:国家标准是由国家机构通过并公开发布的标准;团体标准是由学会、协会、商会、联合会、产业技术联盟等社会团体协调相关市场主体共同制…

【项目实战】如何在项目中基于 Spring Boot Starter 开发简单的 SDK

什么是SDK 通常在分布式项目中,类和方法是不能跨模块使用的。为了方便开发者的调用,我们需要开发一个简单易用的SDK,使开发者只需关注调用哪些接口、传递哪些参数,就像调用自己编写的代码一样简单。实际上,RPC(远程过…

element下拉框联动 或 多选 回显数据后页面操作不生效问题解决

第一种:多选回显不生效 解决方式: 代码: <el-form-item label"系统" prop"Key"> <el-select v-model"addForm.Key" multiple placeholder"请选择" change"$forceUpdate()"> <el-option v-for"item …

Typescript高级用法

TypeScript 是一种类型安全的 JavaScript 超集&#xff0c;除了基本类型和对象类型之外&#xff0c;TypeScript 还提供了一些高级类型系统&#xff0c;使得我们可以更好地处理复杂的数据结构和业务逻辑。本文将深入探讨 TypeScript 的高级类型系统&#xff0c;以更好地理解和使…

【AI大模型应用开发】【综合实战】AI+搜索,手把手带你实现属于你的AI搜索引擎(附完整代码)

现在市面上有很多的AI搜索的应用或插件&#xff0c;一直想学习其背后的实现原理。今天咱们就学习一下&#xff0c;并且亲自动手实践&#xff0c;从0开始&#xff0c;搭建一个自己的AI搜索引擎。最终实现效果如下&#xff1a; 话不多说&#xff0c;开干。 本文代码参考&#xff…

累加求和-C语言

1.问题&#xff1a; 计算123……100的和&#xff0c;要求分别用while、do while、for循环实现。 2.解答&#xff1a; 累加问题&#xff0c;先后将100个数相加。要重复进行100次加法运算&#xff0c;可以用循环结构来实现。重复执行循环体100次&#xff0c;每次加一个数。 3.代…

02DSP学习-了解syscfg

不是哥们儿&#xff0c;学习DSP为什么不是上来就写代码啊&#xff0c;说了一堆&#xff0c;写小说呢啊&#xff1f; 你别着急&#xff0c;学习DSP本身&#xff0c;真不需要写多少代码&#xff0c;我们需要的写的是自己的算法。开车知道方向盘、油门、刹车、后视镜之后也能开&a…

【SpringBoot详细教程】-03-整合Junit【持续更新】

JUnit是一个用于Java编程语言的测试框架。它支持自动化单元测试&#xff0c;可以帮助开发人员测试代码的正确性和健壮性。JUnit提供了一组注解、断言和测试运行器&#xff0c;可以方便地编写和运行单元测试。 SpringBoot 整合 junit 特别简单&#xff0c;分为以下三步完成 在…

cmake--file

教程 参数 需要指定文件后缀 GLOB 只搜索当前目录 GLOB_RECURSE &#xff1a;搜索当前目录和其子目录&#xff08;递归搜索&#xff09; RELATIVE 相对于哪个路径进行搜索&#xff0c;获取文件的相对路径。 使用RELATIVE和不使用RELATIVE的区别&#xff1a; 1&#xff…