开源大模型部署教程:internlm2-chat-1.8b在Ollama中启用OpenAI兼容API
开源大模型部署教程:internlm2-chat-1.8b在Ollama中启用OpenAI兼容API
想在自己的电脑上跑一个智能对话助手,但又觉得调用在线API太贵,或者担心数据隐私?今天,我来带你手把手搞定这件事。我们将把一个名为 InternLM2-Chat-1.8B 的轻量级开源大模型,通过 Ollama 这个神器部署到本地,并且让它支持像调用ChatGPT官方API一样的方式来使用。整个过程非常简单,即使你是刚接触AI部署的新手,也能跟着一步步完成。
简单来说,Ollama就像是一个“模型应用商店”,让你能一键下载和运行各种开源大模型。而InternLM2-Chat-1.8B,则是一个表现相当不错的“小模型”,它来自上海人工智能实验室的“书生·浦语”系列,虽然只有18亿参数,但对话能力、逻辑推理都挺能打,关键是它对电脑配置要求不高。
学完这篇教程,你将能:
- 在本地成功运行一个属于自己的AI对话模型。
- 通过标准的OpenAI API格式来调用它,这意味着你可以直接使用很多现成的AI工具(比如一些开源的聊天界面、自动化脚本)而无需修改代码。
- 拥有一个完全在自己掌控下的、免费的AI助手。
准备好了吗?我们开始吧。
1. 准备工作与环境搭建
在开始之前,我们需要确保电脑环境就绪。整个过程主要分为两步:安装Ollama,然后通过它拉取我们需要的模型。
1.1 安装Ollama
Ollama的安装极其简单,它支持Windows、macOS和Linux。
- Windows/macOS用户:直接访问 Ollama官网,点击下载对应系统的安装包,像安装普通软件一样完成安装。
- Linux用户:在终端中执行以下一键安装命令即可。
curl -fsSL https://ollama.com/install.sh | sh
安装完成后,打开你的终端(Windows上是PowerShell或CMD,macOS/Linux是Terminal),输入 ollama --version。如果能看到版本号,说明安装成功。
Ollama安装后会在后台运行一个服务,默认通过 http://localhost:11434 提供API。
1.2 拉取InternLM2-Chat-1.8B模型
模型已经由社区热心成员制作并上传到了Ollama的模型库。我们只需要一条命令就能把它下载到本地。
在终端中执行:
ollama pull internlm2:1.8b
这条命令告诉Ollama:“去把那个叫 internlm2,标签是 1.8b 的模型给我拉下来。” 下载时间取决于你的网速,模型大小约1.8GB,一般几分钟就好。
下载完成后,你可以运行以下命令进行一个简单的测试,看看模型是否正常工作:
ollama run internlm2:1.8b
执行后,你会进入一个交互式对话界面,直接输入问题,比如“你好,介绍一下你自己”,模型就会生成回复。按 Ctrl+D 可以退出这个交互模式。
至此,一个本地的大模型已经跑起来了!但这只是基础玩法。接下来,我们要解锁它的“完全体”——启用OpenAI兼容API。
2. 启用OpenAI兼容API接口
默认情况下,Ollama提供的API接口和OpenAI的格式不太一样。为了让各种基于OpenAI SDK开发的工具能无缝接入我们的本地模型,我们需要让Ollama“模仿”OpenAI的API。
幸运的是,Ollama原生就支持这个功能,只需要在启动时加一个参数。
2.1 以兼容模式启动Ollama
首先,如果你刚才测试的模型还在运行,先按 Ctrl+C 停止它。
然后,使用以下命令重新启动Ollama服务:
ollama serve
注意:在某些系统上,Ollama安装后可能已经作为服务运行了。你可以打开任务管理器(Windows)或活动监视器(macOS)查找 ollama 进程并结束它,然后再执行上面的命令。或者,更简单的方法是,我们直接在一个新的终端窗口运行模型并指定API格式。
2.2 验证API是否生效
Ollama的OpenAI兼容端点位于 http://localhost:11434/v1。我们可以用最直接的 curl 命令来测试它。
打开一个新的终端窗口,输入以下测试命令:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "internlm2:1.8b",
"messages": [
{
"role": "user",
"content": "你好,请用一句话介绍你自己。"
}
],
"stream": false
}'
这个命令的结构和OpenAI官方的API调用一模一样:
model: 指定我们要使用的模型,就是internlm2:1.8b。messages: 对话历史列表,这里我们只发了一条用户消息。stream: 设为false表示我们不需要流式输出,等它生成完一次性返回。
如果一切正常,你会看到一串JSON格式的返回结果,其中 choices[0].message.content 字段里就是模型的回复内容。
看到成功的回复,恭喜你!你的本地模型已经成功开启了“OpenAI模式”。现在,任何兼容OpenAI API的客户端都能连接它了。
3. 使用Python客户端进行调用
光用 curl 测试还不够,我们最终是要集成到自己的程序里的。下面我用Python演示如何像调用ChatGPT一样调用我们的本地模型。
3.1 安装OpenAI Python SDK
虽然我们调用的是本地服务,但可以使用官方的 openai 库,因为它只是一个遵循相同协议的客户端。
在终端中运行:
pip install openai
3.2 编写调用代码
创建一个新的Python文件,比如叫做 local_ai_chat.py,然后写入以下代码:
from openai import OpenAI
# 关键步骤:将客户端指向本地的Ollama服务
client = OpenAI(
base_url="http://localhost:11434/v1", # Ollama的OpenAI兼容端点
api_key="ollama", # 这里可以随便填,Ollama不验证,但不能为空
)
# 发起一次聊天补全请求
response = client.chat.completions.create(
model="internlm2:1.8b", # 指定模型
messages=[
{"role": "system", "content": "你是一个乐于助人的AI助手,回答要简洁明了。"},
{"role": "user", "content": "周末去爬山需要准备哪些物品?请列出5项。"}
],
stream=False, # 非流式输出
max_tokens=200, # 限制生成的最大长度
)
# 打印模型的回复
print("AI回复:")
print(response.choices[0].message.content)
# 你也可以查看完整的响应结构
# print(response)
代码解读:
- 初始化
OpenAI客户端时,我们把base_url从默认的https://api.openai.com改成了我们本地的http://localhost:11434/v1。 api_key随便填一个非空字符串即可,因为Ollama的本地服务通常不进行鉴权。- 在
messages里,我们添加了一个system角色消息来设定AI的行为,这可以让它的回答更符合我们的期望。 - 运行这个脚本,你就会看到模型生成的爬山物品清单。
3.3 尝试流式输出
流式输出可以让回答一个字一个字地显示出来,体验更好,尤其生成长文本时。修改一下上面的调用代码:
response = client.chat.completions.create(
model="internlm2:1.8b",
messages=[
{"role": "user", "content": "给我写一个关于星辰大海的简短小故事,大约100字。"}
],
stream=True, # 启用流式输出
max_tokens=150,
)
print("故事开始:")
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True) # 逐字打印
print("\n--- 故事结束 ---")
运行这段代码,你会看到故事是逐渐生成的,而不是等待全部生成完再一次性显示。
4. 进阶技巧与常见问题
掌握了基本调用后,我们来看看如何用得更好,以及遇到问题怎么办。
4.1 调整模型参数以获得更好效果
就像烹饪要控制火候,调用模型时也可以通过参数来调整它的“性格”和输出质量。在 client.chat.completions.create 方法里可以设置:
temperature(默认~0.8): 控制随机性。值越低(如0.2),回答越确定、保守;值越高(如1.2),回答越随机、有创意。对于事实性问答,建议调低;对于创意写作,可以调高。top_p(默认1.0): 另一种控制随机性的方法,通常和temperature二选一即可。max_tokens: 限制单次生成的最大长度(token数)。1个token约等于0.75个英文单词或半个中文汉字。根据需要设置,防止生成过长内容。
示例:让回答更专注、更确定。
response = client.chat.completions.create(
model="internlm2:1.8b",
messages=[{"role": "user", "content": "Python中如何读取一个文本文件?"}],
temperature=0.3, # 降低随机性,让回答更精准
max_tokens=100,
)
4.2 常见问题与排查
- 连接被拒绝:运行
curl或Python代码时提示连接错误。- 检查Ollama服务:确保
ollama serve正在运行,并且没有报错。 - 检查端口:确认Ollama是否运行在
11434端口。可以在浏览器访问http://localhost:11434,如果看到Ollama的欢迎信息,说明服务正常。
- 检查Ollama服务:确保
- 模型找不到:API返回错误,提示模型不存在。
- 确认模型名称:使用
ollama list命令查看本地已下载的模型列表,确认internlm2:1.8b在其中。 - 注意拼写:API调用中的模型名必须和
ollama list显示的名称完全一致。
- 确认模型名称:使用
- 回复速度慢或内容奇怪:
- 检查硬件:InternLM2-1.8B虽然小巧,但在CPU上运行仍可能较慢。如果有NVIDIA显卡,可以确保Ollama正确识别并使用了GPU加速(安装时通常会自动配置)。
- 调整参数:如果回复逻辑混乱,尝试将
temperature调低。 - 优化提示词:在
system消息或user消息中给出更清晰、具体的指令。
4.3 探索其他应用方式
一旦API配置好,你的想象力就是极限:
- 接入开源聊天界面:比如 Chatbot UI, Open WebUI 等,这些项目通常只需要你修改一个环境变量(
OPENAI_API_BASE)就能指向你的本地Ollama服务,瞬间获得一个漂亮的ChatGPT-like界面。 - 集成到自动化脚本:用Python写脚本,让AI自动处理邮件摘要、数据报告初稿、代码注释生成等任务。
- 作为其他应用的后端:为你自己开发的小工具、网站提供智能对话能力。
5. 总结
回顾一下,我们今天完成了几件很酷的事:
- 轻松部署:利用Ollama,我们几乎零配置地在本地跑起了一个功能不错的开源大模型 InternLM2-Chat-1.8B。
- 标准化接口:通过启用Ollama的OpenAI兼容模式,我们获得了一个标准的API端点。这带来的最大好处是 “生态兼容” ,无数为ChatGPT设计的工具、库和代码,现在都能直接为你服务。
- 实战编程:我们用Python代码演示了如何像调用远程OpenAI服务一样调用本地模型,包括普通调用和流式输出,还学习了如何调整参数来优化回答质量。
这种方式的优势非常明显:完全免费、数据隐私、低延迟、可离线。虽然1.8B参数模型的性能无法与GPT-4等顶级大模型相比,但对于很多日常问答、文本生成、编程辅助任务来说,它已经是一个强大且可用的工具,更是学习和研究AI应用的绝佳起点。
下一步,你可以尝试拉取Ollama支持的其他模型(比如 llama3.2, qwen2.5),或者探索如何给你的本地助手添加“长期记忆”(向量数据库)。AI的世界就在你的指尖,现在就开始创造吧!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)