Ollama进阶,在Python、Java、Go项目中集成Deepseek、QWQ大模型

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

Ollama系列文章:
Ollama入门,一键启动本地DeepSeek大模型
Ollama入门,Ollama技术架构与原理
Ollama进阶,在Python、Java、Go项目中集成Deepseek、QWQ大模型
Ollama进阶,在Javascript(nodejs)前后端项目中集成Deepseek、QWQ大模型
Ollama高手,玩转本地自定义大模型(LLM)
Ollama高手,调优Ollama环境变量,提高性能与安全性
Ollama高手,调优Ollama模型参数,提高模型输出质量


在“Ollama入门,一键启动本地DeepSeek大模型”一文中,我们介绍了Ollama的基本使用方法,同时也推荐了ChatBox、Cherry Studio等AI智能客户端来完成文字、图片、语音等多模态输入,实现与 AI 的交互。

但是,仅仅这样常常不足以满足实际的需要,而在线版的Deepseek、ChatGPT、豆包往往可以提供更好功能,这样在本地部署DeepSeek大模型就成了geek的自娱自乐了,因此我们必须将Ollama整合到项目中去,让它与自有系统整合起来,实现更加丰富的功能。

1、如何调用Ollama服务?

Ollama主要提供了两种方式供开发者在不同编程语言中使用其功能:
RESTful API: Ollama 提供强大的 RESTful API,使开发者能够方便地与大型语言模型进行交互。通过这些 API,用户可以发送请求并接收模型生成的响应,应用于自然语言处理、文本生成等任务。
SDK: Ollama 提供了官方的 Python SDK、Go SDK,允许开发者在 Python 环境中与本地运行的模型进行交互。通过该 SDK,用户可以轻松地将自然语言处理任务集成到 Python 项目中,执行各种操作,如文本生成、对话生成、模型管理等,而无需手动调用命令行。

2、如何查看和配置Ollama运行端口

查看Ollama运行端口

Ollama 默认监听 11434 端口,通常可以使用 lsof 命令(适用于 macOS 和 Linux)、netstat 命令(适用于 Windows 和 Linux)查看端口使用情况,如:

lsof -i -P -n | grep ollama

如果有输出,说明 Ollama 正在特定端口监听。也可以查看 Ollama 配置中的OLLAMA_HOST参数值来确定Ollama的运行端口:

echo $OLLAMA_HOST

如果 OLLAMA_HOST 被设置,例如:0.0.0.0:12345

自定义Ollama运行端口

如果项目需要自定义一个端口,则可以通过下面的方式设置一个临时可用的端口:

export OLLAMA_HOST=0.0.0.0:12345
ollama serve

如果你希望 每次启动 Ollama 时都使用新的端口,可以把 OLLAMA_HOST 添加到 shell 配置文件
在Linux/macOS下,可以在 ~/.bashrc 或 ~/.zshrc(如果使用 Zsh)中添加:

export OLLAMA_HOST=0.0.0.0:12345

然后运行:

source ~/.bashrc   # 或者 source ~/.zshrc

在Windows下,可以通过修改系统环境变量来完成同样的设置。

3、如何在Java中调用Ollama RESTful API

Ollama RESTful API规范

Ollama 提供了一套 RESTful API,使开发者能够方便地与大型语言模型进行交互。以下是主要的 API 端点及其调用参数:

文本生成接口
端点:

POST /api/generate

描述:
使用指定的模型,根据提供的提示生成响应。此端点支持流式响应,即服务器会持续发送数据流,直到完成生成。
请求参数:
model (必需):模型名称。
prompt:要生成响应的提示文本。
suffix:模型响应后的文本。
images (可选):包含 base64 编码的图像列表(适用于支持多模态的模型,如 llava)。
format:指定返回响应的格式,可以是 json 或 JSON 模式。
options:模型的其他参数,例如 temperature。
system:系统消息(会覆盖 Modelfile 中定义的内容)。
template:要使用的提示模板(会覆盖 Modelfile 中定义的内容)。
stream:如果设置为 false,响应将作为单个对象返回,而不是流式对象。
keep_alive:控制模型在内存中保持加载的时间,例如 “5m” 表示 5 分钟,0 表示生成响应后立即卸载模型。
请求示例:

curl http://localhost:11434/api/generate -d '{
  "model": "qwq",
  "prompt": "你是谁?"
}'

对话补全
端点:

POST /api/chat

描述:
使用指定的模型,基于提供的对话历史生成下一条消息。此端点也支持流式响应。
请求参数:
model (必需):模型名称。
messages:对话的消息列表,用于保持对话上下文。每条消息包含以下字段:
role:消息发送者的角色,例如 user、assistant。
content:消息内容。
tools:模型可使用的工具列表(以 JSON 格式提供)。
format:指定返回响应的格式,可以是 json 或 JSON 模式。
options:模型的其他参数,例如 temperature。
stream:如果设置为 false,响应将作为单个对象返回,而不是流式对象。
keep_alive:控制模型在内存中保持加载的时间。

示例请求:

curl http://localhost:11434/api/chat -d '{
  "model": "qwq",
  "messages": [
    { "role": "user", "content": "你是谁?" }
  ]
}'

编写Java代码,对接API

在 Java 中,您可以使用诸如 Apache HttpClient、OkHttp 等 HTTP 客户端库来发送 HTTP 请求。以下是一个使用 Apache HttpClient 的示例:

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值