Ollama部署internlm2-chat-1.8b:支持HTTP API+OpenAI兼容接口的完整配置
想快速体验一个功能强大、支持超长对话的轻量级中文大模型吗?今天我们就来聊聊如何用Ollama一键部署InternLM2-Chat-1.8B,并且让它不仅能通过网页聊天,还能像OpenAI的ChatGPT那样,通过标准的HTTP API接口被你的程序调用。
InternLM2-Chat-1.8B是“书生·浦语”系列的第二代模型,虽然只有18亿参数,但它在指令遵循、长文本理解和中文对话上的表现相当亮眼。最吸引人的是,它原生支持长达20万字符的超长上下文,这意味着你可以丢给它一篇很长的文档让它总结,或者进行多轮深入的对话。
通过Ollama这个工具,我们可以把部署和管理的复杂度降到最低,几分钟内就能让模型跑起来,并且获得一个功能齐全的API服务。接下来,我就带你一步步完成部署和配置。
1. 环境准备与Ollama快速部署
在开始之前,我们先确保有一个可以运行的环境。Ollama支持Windows、macOS和Linux,这里我们以Linux系统为例,其他系统操作类似。
1.1 安装Ollama
Ollama的安装非常简单,一行命令就能搞定。打开你的终端,执行下面的命令:
curl -fsSL https://ollama.com/install.sh | sh这条命令会自动下载并安装Ollama。安装完成后,Ollama服务会自动启动。你可以通过下面的命令检查服务状态:
systemctl status ollama如果看到“active (running)”的字样,说明服务已经成功运行了。
1.2 拉取InternLM2-Chat-1.8B模型
Ollama安装好后,它自带了一个模型库,我们可以直接从里面拉取我们需要的模型。InternLM2-Chat-1.8B在Ollama的模型库中对应的名称是internlm2:1.8b。
在终端里执行拉取命令:
ollama pull internlm2:1.8b这个过程会根据你的网速花费一些时间,因为需要下载大约3.6GB的模型文件。下载完成后,Ollama就相当于已经把这个模型“安装”到本地了。
1.3 运行模型并测试基础对话
模型拉取成功后,我们可以先以最简单的交互模式运行一下,看看它是否工作正常。
ollama run internlm2:1.8b执行这个命令后,你会进入一个对话界面,终端提示符会变成“>>>”,这时你就可以直接输入问题与模型对话了。例如,你可以输入:
>>> 请用一句话介绍你自己。模型会立刻生成回复。输入/bye可以退出对话模式。
到这一步,一个最基本的大模型本地部署就已经完成了。但我们的目标不止于此,我们还需要让它能通过API被调用。
2. 启动API服务与基础接口调用
Ollama的强大之处在于,它不仅仅是一个命令行工具,更是一个完整的模型服务框架。它内置了HTTP API服务器,我们只需要以服务模式启动它。
2.1 启动Ollama API服务
默认情况下,安装Ollama时它已经作为系统服务运行了,并且监听11434端口。如果你需要手动启动或确认,可以使用以下命令:
ollama serve这个命令会在前台启动API服务。如果你想在后台运行,并且你的系统使用systemd,那么ollama服务默认已经是启用的。
2.2 使用cURL测试基础生成接口
Ollama的API设计得很简洁。最核心的接口是/api/generate,用于文本生成。我们可以用最经典的命令行工具curl来测试一下。
打开一个新的终端窗口,输入以下命令:
curl http://localhost:11434/api/generate -d '{ "model": "internlm2:1.8b", "prompt": "为什么天空是蓝色的?", "stream": false }'让我解释一下这个请求的各个部分:
"model": "internlm2:1.8b":指定我们要使用哪个模型。"prompt": "...":这是给模型的输入问题或指令。"stream": false:这里我们设置为false,意思是让服务器一次性生成完整回复再返回。如果设为true,则会以流式(逐字)的方式返回,适合需要实时显示的场景。
执行命令后,你会收到一个JSON格式的回复,其中"response"字段里就是模型生成的答案。
2.3 理解关键API参数
为了获得更好的效果,你可以在请求里加入更多参数:
curl http://localhost:11434/api/generate -d '{ "model": "internlm2:1.8b", "prompt": "写一首关于春天的五言绝句。", "stream": false, "options": { "temperature": 0.8, "top_p": 0.9, "num_predict": 256 } }'这里options对象里的参数很重要:
temperature(温度):控制生成文本的随机性。值越高(如1.0),输出越随机、有创意;值越低(如0.1),输出越确定、保守。通常0.7-0.9适合创意任务,0.1-0.3适合事实问答。top_p(核采样):另一种控制随机性的方法。通常设置为0.9左右,与temperature搭配使用。num_predict:限制模型生成的最大令牌数,可以防止它“说个没完”。
通过调整这些参数,你可以让模型的表现更符合你的需求。
3. 配置OpenAI风格兼容接口
现在我们已经有了一个可用的API,但它的格式和OpenAI官方API不太一样。如果你的现有代码(比如使用openai这个Python库的)想直接迁移过来,就需要一个兼容层。幸运的是,Ollama社区提供了解决方案。
3.1 使用ollama-openai-compatibility项目
GitHub上有一个非常受欢迎的项目叫ollama-openai-compatibility。它不是修改Ollama本身,而是作为一个轻量的代理服务,接收标准OpenAI格式的请求,转换成Ollama格式,再将结果转换回去。
首先,我们需要安装Node.js环境(因为这个代理是用JavaScript写的)。然后克隆项目并安装依赖:
git clone https://github.com/huggingface/ollama-openai-compatibility.git cd ollama-openai-compatibility npm install3.2 启动兼容层代理服务
安装好依赖后,启动代理服务。你需要告诉它后端Ollama服务的地址(默认就是本地的11434端口)。
OLLAMA_BASE_URL=http://localhost:11434 node index.js这个命令会启动一个服务,默认监听11435端口。这个服务现在就是一个“山寨版”的OpenAI API端点。
3.3 使用OpenAI Python库进行调用
现在,奇迹发生了。你可以像调用真实的OpenAI API一样,调用你本地的这个服务。
首先,确保你安装了OpenAI的Python库:
pip install openai然后,你可以写一个这样的Python脚本:
from openai import OpenAI # 关键在这里:将base_url指向我们刚刚启动的代理服务 client = OpenAI( base_url='http://localhost:11435/v1', # 注意端口是11435,并且加上/v1 api_key='ollama' # API密钥可以任意填写,因为本地服务不需要验证,但字段必须有 ) # 发起一个聊天补全请求,这和调用ChatGPT的API一模一样 response = client.chat.completions.create( model="internlm2:1.8b", # 指定模型 messages=[ {"role": "system", "content": "你是一个乐于助人的助手。"}, {"role": "user", "content": "用Python写一个函数,计算斐波那契数列。"} ], temperature=0.7, max_tokens=500 ) # 打印结果 print(response.choices[0].message.content)运行这个脚本,你会发现它完美地工作了。messages参数里的role(系统、用户、助手)和OpenAI API完全兼容。这意味着,所有为ChatGPT设计的工具、框架和代码,几乎都可以无缝对接到你本地部署的InternLM2模型上。
4. 进阶配置与实用技巧
基本的部署和API调用会了,我们再来看看如何让它更稳定、更高效地为你服务。
4.1 调整Ollama服务配置
Ollama的配置文件可以让你微调服务行为。配置文件通常位于~/.ollama/config.json(Linux/macOS)或C:\Users\<你的用户名>\.ollama\config.json(Windows)。
你可以打开这个文件进行编辑,下面是一些有用的配置项:
{ "host": "0.0.0.0", // 监听所有网络接口,允许其他设备访问(注意安全风险) "port": 11434, // 服务端口 "num_parallel": 2 // 并行处理的请求数,根据你的GPU内存调整 }修改配置后,需要重启Ollama服务才能生效。
4.2 模型运行参数优化
在通过API调用时,我们可以在options里传参。但如果你希望某个模型有默认的优化参数,可以在Ollama中为模型创建一个“Modelfile”来定制。
首先,创建一个名为Modelfile.internlm2-custom的文件,内容如下:
FROM internlm2:1.8b # 设置系统提示词,给模型一个默认身份 SYSTEM """你是一个专业、准确且简洁的助手。""" # 设置默认参数 PARAMETER temperature 0.7 PARAMETER top_p 0.9 PARAMETER num_predict 1024然后,使用这个Modelfile创建一个新的模型副本:
ollama create internlm2-custom -f ./Modelfile.internlm2-custom创建完成后,你就可以通过ollama run internlm2-custom或API调用model: "internlm2-custom"来使用这个带有预置参数和系统提示词的版本了。
4.3 结合LangChain等框架使用
由于我们已经配置好了OpenAI兼容接口,与LangChain、LlamaIndex这类流行的AI应用框架集成变得异常简单。
以LangChain为例:
from langchain_openai import ChatOpenAI from langchain.schema import HumanMessage # 初始化LLM,指向我们的本地兼容服务 llm = ChatOpenAI( openai_api_base="http://localhost:11435/v1", openai_api_key="ollama", model_name="internlm2:1.8b", temperature=0.8, max_tokens=1000 ) # 现在可以像使用ChatGPT一样使用它 messages = [HumanMessage(content="简述人工智能的发展历史。")] response = llm.invoke(messages) print(response.content)这样,你就可以利用LangChain强大的链(Chain)、代理(Agent)和记忆(Memory)等功能,基于本地模型构建复杂的应用了。
5. 总结
通过上面的步骤,我们完成了一件很有成就感的事:把一个大模型从“遥远的云端”请到了我们自己的电脑上,并且给它装上了标准化的“插座”(API),让我们的程序可以方便地使用它。
我们来快速回顾一下核心要点:
- 部署极简:使用Ollama,通过
ollama pull和ollama run两条命令就能让InternLM2-Chat-1.8B模型跑起来,省去了复杂的环境依赖和配置。 - 原生API可用:Ollama自带的HTTP API(
/api/generate)功能完备,通过简单的HTTP请求就能进行文本生成,并支持流式输出、参数调节等高级功能。 - 生态无缝兼容:借助
ollama-openai-compatibility这样的兼容层,我们获得了与OpenAI官方API格式完全一致的接口。这意味着现有的、庞大的基于OpenAI API的代码、工具和生态,都可以几乎零成本地迁移到本地模型上。 - 轻量且强大:InternLM2-Chat-1.8B模型本身在18亿参数的级别上做到了出色的性能,特别是对长上下文的支持和中文对话的优化,使得它在资源消耗和效果之间取得了很好的平衡,非常适合个人开发者、研究人员和小型项目进行本地部署和实验。
这种部署方式为你打开了一扇门。你可以在完全离线、数据隐私有保障的环境下开发AI应用,也可以将它作为后端服务集成到你的网站或机器人中。更重要的是,你可以自由地、无限次地调用它,而不必担心API调用费用。
下一步,你可以尝试用这个本地模型去搭建一个智能客服原型、一个个人知识库问答系统,或者只是一个随时可以聊天的AI伙伴。动手试试吧,乐趣才刚刚开始。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。