Ollama的配置修改与接口调用

一、修改环境变量1.1  配置远程访问在我们本地部署好ollama之后,仅支持本机访问,我们可以通过修改环境变量让其他人可以远程访问。 在wins电脑上增加环境变量:复制1.2  配置本地模型路径1.2.1 本地模型默认路径wins本地模型默认路径:C:\Users\%username%\.ollama\models。 这里 %username% 是当前登录的用户名。

Ollama的配置修改与接口调用

一、修改环境变量

1.1  配置远程访问

在我们本地部署好ollama之后,仅支持本机访问,我们可以通过修改环境变量让其他人可以远程访问。

在wins电脑上增加环境变量:

复制
OLLAMA_HOST   0.0.0.0:11434

图片

1.2  配置本地模型路径

1.2.1 本地模型默认路径

wins本地模型默认路径:C:\Users\%username%\.ollama\models。

这里 %username% 是当前登录的用户名。例如,如果用户名为 Smqnz,则模型文件的默认存储路径可能是 C:\Users\Smqnz\.ollama\models。

以我的电脑为例:

复制
C:\Users\admin\.ollama\models

图片

1.2.2 修改本地模型默认路径

wins上的环境变量增加:

复制
OLLAMA_MODELS  你想要存放的路径

以下为修改示例:

图片

修改后,重启ollama即可。

1.3  配置允许的http请求来源

OLLAMA_ORIGINS 是 Ollama 中用于配置跨域资源共享(CORS)的环境变量,可以指定哪些来源(域名、IP 地址等)可以访问 Ollama 提供的 API 服务。

如果我们想让它接收任何来源(IP)的http请求的话,我们需要将其设置为*。

复制
OLLAMA_ORIGINS  *

图片

这里一定要注意,以上修改的环境变量名称必须为大写,不要随意修改。

二、ollama常用API请求

一般来说,我们可以通过打开命令行窗口直接进行对话。

图片

但是这种方式对于开发者来说并不实用,一般我们需要通过其API进行访问与开发,本次我们就来详细聊一下ollama常见的API。

2.1  文本生成API

Ollama 提供了一套功能丰富的文本生成接口,方便用户与本地部署的模型进行交互,以下是其主要的文本生成接口及功能介绍:

接口路径:POST /api/generate

功能:向模型发送提示(prompt),生成文本回复。

请求参数:

model:模型名称,如 "deepseek-r1:7b"。

prompt:输入的提示文本。

stream:是否启用流式输出,默认为 false。

options:可选参数,包括:

    temperature:控制生成文本的多样性,取值范围通常为 0 到 1。

    max_tokens:最大生成的 token 数量。

    top_p:Top-p 采样参数。

复制
import requests


# Ollama 服务的 URL
url = "http://localhost:11434/api/generate"


# 请求数据
data = {
    "model": "deepseek-r1:8b",  # 指定模型名称
    "prompt": "你好,请简单介绍一下Python语言的特点。",  # 输入的提示词
    "stream": False,  # 是否启用流式响应
    "options": {  # 可选参数
        "temperature": 0.7,  # 温度参数,控制生成内容的随机性
        "max_tokens": 100  # 最大生成长度
    }
}


# 发送 POST 请求
response = requests.post(url, jsnotallow=data)


# 检查响应状态
if response.status_code == 200:
    result = response.json()
    print("生成的文本:", result.get("response"))
else:
    print("请求失败,状态码:", response.status_code)
    print("错误信息:", response.text)

图片

2.2  对话聊天API

接口路径:POST /api/chat

功能:支持多轮对话,模型会记住上下文。

请求参数:

model:模型名称。

messages:消息列表,包含用户输入和模型回复,格式为 {"role": "user", "content": "用户输入内容"}。

stream:是否启用流式输出,默认为 false。

options:可选参数,与生成文本接口类似。

复制
import requests
import json


# 设置请求的URL和端口
url = "http://localhost:11434/api/chat"


# 设置请求的数据
data = {
    "model": "deepseek-r1:8b",  # 模型名称
    "messages": [
        {"role": "system", "content": "你现在是一名合格的售票员,你还可以随意生成一些航班路线提供给用户,请扮演好您的角色。"},
        {"role": "user", "content": "你好,我想订一张机票。"},
        {"role": "assistant", "content": "好的,请问您要去哪里?"},
        {"role": "user", "content": "我要去北京。"},
        {"role": "user", "content": "有哪些航班可选?"}
    ],
    "stream": False  # 是否启用流式输出
}


# 设置请求头
headers = {
    "Content-Type": "application/json"
}


# 发送POST请求
response = requests.post(url, headers=headers, data=json.dumps(data))


# 检查响应状态码
if response.status_code == 200:
    # 解析响应内容
    result = response.json()
    # 输出模型的回复内容
    print("模型回复:", result.get("message").get("content"))
else:
    # 打印错误信息
    print(f"请求失败,状态码:{response.status_code}")
    print("错误信息:", response.text)

图片

三、ollama兼容openai的请求

3.1  单轮对话

复制
from openai import OpenAI


client = OpenAI(
    base_url="http://localhost:11434/v1",  # Ollama默认API地址
    api_key="test"  # 必填字段但会被忽略,随便填写即可
)


response = client.chat.completions.create(
    model="deepseek-r1:8b",  # 替换为已下载的模型名称
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手"},
        {"role": "user", "content": "用50字解释量子计算"}
    ],
    temperature=0.7,
    max_tokens=1024
)


print(response.choices[0].message.content)

图片

3.2  多轮对话

复制
from openai import OpenAI




def run_chat_session():
    client = OpenAI(
        base_url="http://localhost:11434/v1/",
        api_key="test"  # 必填但会被忽略
    )


    chat_history = []
    while True:
        user_input = input("用户:")
        if user_input.lower() == "exit":
            print("AI:对话结束")
            break


        chat_history.append({"role": "user", "content": user_input})


        try:
            response = client.chat.completions.create(
                messages=chat_history,
                model="deepseek-r1:8b"  # 替换成你安装的模型名称
            )
            ai_response = response.choices[0].message.content
            print(f"AI:{ai_response}")
            chat_history.append({"role": "assistant", "content": ai_response})
        except Exception as e:
            print(f"错误:{e}")




if __name__ == "__main__":
    run_chat_session()

图片

图片

图片

可以看到,多轮对话可以通过维护问答列表能够很好地理解上下文的含义。

相关资讯

1分钟学会DeepSeek本地部署,小白也能搞定!

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。 DeepSeek 身上的标签有很多,其中最具代表性的标签有以下两个:低成本(不挑硬件、开源)高性能(推理能力极强、回答准确)一、为什么要部署本地DeepSeek? 相信大家在使用 DeepSeek 时都会遇到这样的问题:图片这是由于 DeepSeek 大火之后访问量比较大,再加上漂亮国大规模、持续的恶意攻击,导致 DeepSeek 的服务器很不稳定。

Deepseek本地部署,培养自己的独有的AI伴侣!

目前我们所知道的AI大部分都是在网页或者APP上直接使用,缺少其独特性,deepseek支持将AI部署在我们的本地电脑,只要你得性能够,就可以创造一个独属于你自己的AI伴侣。 废话不多说直接上操作! 一、配置要求1.

使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)

你有没有想过,能不能像跟人聊天一样,直接问 PDF 文件或技术手册问题? 比如你有一本很厚的说明书,不想一页页翻,只想问它:“这个功能怎么用? ”或者“这个参数是什么意思?