Ollama部署internlm2-chat-1.8b支持HTTP APIOpenAI兼容接口的完整配置想快速体验一个功能强大、支持超长对话的轻量级中文大模型吗今天我们就来聊聊如何用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 安装OllamaOllama的安装非常简单一行命令就能搞定。打开你的终端执行下面的命令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_URLhttp://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_urlhttp://localhost:11435/v1, # 注意端口是11435并且加上/v1 api_keyollama # API密钥可以任意填写因为本地服务不需要验证但字段必须有 ) # 发起一个聊天补全请求这和调用ChatGPT的API一模一样 response client.chat.completions.create( modelinternlm2:1.8b, # 指定模型 messages[ {role: system, content: 你是一个乐于助人的助手。}, {role: user, content: 用Python写一个函数计算斐波那契数列。} ], temperature0.7, max_tokens500 ) # 打印结果 print(response.choices[0].message.content)运行这个脚本你会发现它完美地工作了。messages参数里的role系统、用户、助手和OpenAI API完全兼容。这意味着所有为ChatGPT设计的工具、框架和代码几乎都可以无缝对接到你本地部署的InternLM2模型上。4. 进阶配置与实用技巧基本的部署和API调用会了我们再来看看如何让它更稳定、更高效地为你服务。4.1 调整Ollama服务配置Ollama的配置文件可以让你微调服务行为。配置文件通常位于~/.ollama/config.jsonLinux/macOS或C:\Users\你的用户名\.ollama\config.jsonWindows。你可以打开这个文件进行编辑下面是一些有用的配置项{ 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_basehttp://localhost:11435/v1, openai_api_keyollama, model_nameinternlm2:1.8b, temperature0.8, max_tokens1000 ) # 现在可以像使用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星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。