
目录1.安装1.1外网及其安装部署1.2无外网及其安装部署2.有关命令2.1核心命令2.1.1模型管理2.1.2模型运行与服务2.1.3其他辅助命令2.2进阶功能介绍后续扩展2.3关键环境变量3.下载有关模型4.控制指令4.1.会话与环境控制4.2.查看与设置4.3.帮助与快捷操作4.4.特别的输入技巧5.调用api部署5.1厂商api-key生成5.2apifox调用5.3python调用6.记忆关联方案6.1“滚雪球”是怎么发生的6.2“滚雪球”的麻烦6.3解决滚雪球的问题方法6.3.1. 外部记忆层RAG 与智能记忆库6.3.2. 模型内化记忆参数化与轻量化微调6.4.3. 记忆即操作系统6.4.4.其他7.本地大模型调用7.1端口服务暴露7.2apifox调用7.3python调用提问8.总结结语1.安装1.1外网及其安装部署联网安装命令curl -fsSL https://ollama.com/install.sh | sed s|https://ollama.com/download |$OLLAMA_MIRROR|g | sh安装成功后命令验证systemctl status ollama1.2无外网及其安装部署为保证到无外网环境运行。提供打包相关文件和有关tar -czvf ollama-portable-full.tar.gz -C /usr/local/bin ollama -C /usr/local/lib ollama -C /etc/systemd/system ollama.service打包有关文件。将包迁入内网机器部署。解压到相同路径需要 root 权限tar -xzvf ollama-portable.tar.gz -C /这会自动将ollama放到/usr/local/binollama目录放到/usr/local/lib。添加执行权限一般解压后已有但可以确认bashchmod x /usr/local/bin/ollama创建 ollama 用户和组为了运行服务但不是必须useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama usermod -a -G render,video ollama如果只打算用ollama serve手动运行可以跳过这一步。配置环境变量可选 如果想把模型下载目录改到其他位置可以设置OLLAMA_MODELS环境变量。测试运行/usr/local/bin/ollama --version /usr/local/bin/ollama serve # 前台启动测试是否正常设置为系统服务如果复制了 service 文件systemctl daemon-reload systemctl enable ollama systemctl start ollama2.有关命令Ollama 的命令行工具设计得比较直观其语法和逻辑与 Docker 相似上手应该不难。核心命令主要围绕模型管理和模型运行展开。2.1核心命令2.1.1模型管理2.1.ollama pull model_name: 从远程仓库下载模型到本地。如果模型已存在会只下载更新的部分。例如ollama pull llama3.2。ollama list(或ollama ls): 列出所有已下载到本地的模型及其 ID、大小等信息。ollama rm model_name: 从本地删除指定的模型以释放磁盘空间。ollama show model_name: 查看指定模型的详细信息如参数、量化等级等。ollama cp source_model destination_model: 复制一个已存在的模型创建一个新的模型副本。ollama create model_name -f Modelfile: 根据Modelfile配置文件创建一个自定义模型。2.1.2模型运行与服务ollama run model_name: 运行模型。如果模型未下载会自动先执行pull操作。执行后会进入交互式对话界面。多行输入: 可以用包裹多行文本。多模态模型: 可直接在命令中附带图片路径让模型分析图片内容。ollama serve: 启动 Ollama 的后台服务进程开始监听 API 请求。ollama ps: 查看当前正在运行加载到内存中的模型列表。ollama stop model_name: 停止一个正在运行的模型以释放 GPU/CPU 资源。ollama launch: 配置并启动与第三方应用的集成如 OpenCode、VS Code 等。2.1.3其他辅助命令ollama --version(或-v): 查看当前安装的 Ollama 版本。ollama --help(或-h): 显示所有可用命令的帮助信息。2.2进阶功能介绍后续扩展生成文本向量 (Embeddings)ollama run embedding_model Your text here可以为给定文本生成向量嵌入用于语义搜索等场景。ollama run nomic-embed-text Hello world[reference:35]自定义模型 (Modelfile)通过Modelfile可以定制模型的系统提示词等参数。例如创建一个“开心猫咪”风格的模型创建Modelfile文件FROM llama3.2 SYSTEM You are a happy cat.[reference:39]执行创建命令ollama create happy-cat -f ./Modelfile[reference:40]运行自定义模型ollama run happy-cat2.3关键环境变量Ollama 的行为可以通过设置环境变量来调整OLLAMA_MODELS: 修改模型文件的默认下载和存储路径。OLLAMA_HOST: 设置 Ollama 服务的监听地址例如0.0.0.0:11434可允许局域网访问。OLLAMA_KEEP_ALIVE: 设置模型在内存中保持加载的时间单位为秒如-1表示永久保留0表示立即卸载。OLLAMA_CONTEXT_LENGTH: 设置模型的上下文长度即“记忆”的 Token 数量默认通常为 4096。为了方便你快速查阅这里整理了一个常用命令速查表命令用途示例ollama pull下载模型ollama pull llama3.2ollama list列出本地模型ollama listollama run运行模型ollama run llama3.2ollama stop停止运行中的模型ollama stop llama3.2ollama ps查看正在运行的模型ollama psollama rm删除本地模型ollama rm llama3.2ollama show查看模型详情ollama show llama3.2ollama serve启动后台服务ollama serveollama create创建自定义模型ollama create -f Modelfileollama --version查看版本ollama --version3.下载有关模型ollama run deepseek-r1:1.5b #如不存在可自行下载模型可在官方库里下载有关模型。1.5b代表这是15亿参数参数越高对设备要求越高。尤其是显卡。根据显卡选择模型。ollama run deepseek-r1:1.5b #再执行后出现对话框对话模型。Use Ctrl d or /bye to exit.结束对话ollama ps #查看正在运行的模型 ollama stop deepseek-r1:1.5b #停止正在运行的模型。4.控制指令Ollama 交互式对话界面REPL中使用的“控制指令”而不是发给模型的提问。它们用来管理会话、调整参数和查看信息。我将它们按功能分组为你逐项拆解4.1.会话与环境控制/clear清空上下文。作用清除当前对话的所有历史记录。模型会“失忆”忘记你之前说过的话。相当于开一个新的话题但不用退出重进。场景聊跑偏了想让模型重新开始回答或者要问一个与前文无关的新问题。/bye退出对话。作用直接结束当前会话退回到 Linux 命令行Shell提示符下。效果等同于按键盘上的Ctrl D。/load model切换模型。作用在不退出当前程序的情况下加载另一个已下载的模型。例如输入/load llama3.2:3b会立即换模型。注意切换模型会释放当前模型占用的内存并加载新模型。/save model保存当前会话。作用将当前包含完整对话历史的“状态”保存为一个新的模型名称或快照。下次你可以通过/load或ollama run 你保存的名字直接恢复这段对话继续聊。4.2.查看与设置/show查看模型配置。作用显示当前模型的详细信息包括它的系统提示词System Prompt、参数设置如温度 Temperature、上下文长度等。相当于查看“模型说明书”。/set设置会话变量。作用临时修改当前会话的模型参数不会影响模型文件本身。这是最强大的命令之一常用子命令有/set system 你是一个热心的老师修改系统提示词改变模型的人格。/set temperature 0.7调整“随机性”0最死板1最天马行空。/set num-ctx 2048调整上下文长度记忆的Token数。/set verbose开启详细模式每次回答后会显示生成速度和消耗的Token数。你可以输入/set verbose开启详细模式再输入/set temperature 1.5调高随机性然后问同一个问题两次会发现回答明显不同。这就是“制造”模型行为的过程你不需要重新训练它就能调整它回答的风格和逻辑试试看吧。4.3.帮助与快捷操作/?或/help显示帮助菜单。作用就是你现在输入的命令用于随时查看所有可用指令。/? shortcuts查看快捷键列表。作用显示键盘上的快捷操作比如Ctrl C中断模型当前正在生成的回答。方向键 ↑/↓翻阅历史输入过的提问。4.4.特别的输入技巧三个双引号开启多行输入。如果不小心按了回车想换行直接按回车会被当作发送。而输入并按回车后光标会进入多行模式你可以粘贴代码块或长文章。结束多行输入时单独另起一行再输入并回车内容才会被发送给模型。示例text ... 请翻译这段文字 ... Hello World ... 5.调用api部署5.1厂商api-key生成调用api部署。无图演示。省略一堆图片5.2apifox调用请求体文件如下curl https://api.deepseek.com/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer ${DEEPSEEK_API_KEY} \ -d { model: deepseek-v4-pro, messages: [ {role: system, content: You are a helpful assistant.}, {role: user, content: Hello!} ], thinking: {type: enabled}, reasoning_effort: high, stream: false }在apifox中有关文件的调用post https://api.deepseek.com/chat/completions 测试环境headers: Content-Type-application/json Authorization-Bearer ${DEEPSEEK_API_KEY} bodyjson) { model: deepseek-chat, messages: [ • {role: system, content: 你是一个温柔大姐姐.}, • {role: user, content: 你是谁} • ], stream: false }api反馈体内容:choices: [ { index: 0, message: { role: assistant, content: 我是你的温柔大姐姐呀可以叫我“姐姐”也可以叫我任何你喜欢的名字。你想和我聊什么呢别害羞有什么事情都可以和姐姐讲哦 }, logprobs: null, finish_reason: stop } ],token解析文件usage: { prompt_tokens: 12, completion_tokens: 35, total_tokens: 47, prompt_tokens_details: { cached_tokens: 0 }, prompt_cache_hit_tokens: 0, prompt_cache_miss_tokens: 12 },const usage { /** * prompt_tokens: 你发来的问题Prompt被切分的 Token 数量 * 值: 12 * 含义: 你问的那句 你是谁 被系统分词器切成了 12 个小碎片 * 计算: 中文汉字 标点每个字大约占 1~2 个 Token */ prompt_tokens: 12, /** * completion_tokens: 我AI生成的回答Completion的 Token 数量 * 值: 35 * 含义: 大姐姐回给你的那堆暖心话一共切出了 35 个碎片 * 对比: 通常回答比问题长所以这个数会比 prompt_tokens 大 */ completion_tokens: 35, /** * total_tokens: 本次对话的总消耗 Token 数 * 值: 47 * 公式: prompt_tokens(12) completion_tokens(35) 47 * 注意: 计费就是按这个总数来扣的虽然你这次余额不足没扣成 */ total_tokens: 47, // // 2️⃣ 深层剖析针对你发来的 Prompt 做缓存分析 // prompt_tokens_details: { /** * cached_tokens: 命中缓存的 Token 数量旧版字段向下兼容 * 值: 0 * 含义: 系统内部有个“缓存池”如果同样的问题被反复问就能秒回。 * 这里是 0说明之前没人问过一模一样的 你是谁 */ cached_tokens: 0, /** * prompt_cache_hit_tokens: 缓存命中的 Token 数新版标准命名 * 值: 0 * 含义: 跟上一行完全同义双重确认——这次没吃到“缓存红利” * 好处: 如果命中缓存不仅速度快而且计费通常会便宜点 */ prompt_cache_hit_tokens: 0, /** * prompt_cache_miss_tokens: 缓存未命中的 Token 数需要硬算的 * 值: 12 * 含义: 你这 12 个 Token 全部属于“新鲜货”系统没法偷懒 * 必须从头跑一遍神经网络计算。 * 校验: 0 12 12完美对上了 prompt_tokens 的总数 ✅ */ prompt_cache_miss_tokens: 12 } };5.3python调用习惯python调用端口。给出python补充文档。隐藏api调用格式如下:须注意在主机中添加环境变量api:value-key格式。内容为DEEPSEEK_API_KEY-api。添加环境变量后须重启pycharm。import os from openai import OpenAI client OpenAI( api_keyos.environ.get(DEEPSEEK_API_KEY), base_urlhttps://api.deepseek.com) response client.chat.completions.create( modeldeepseek-chat, messages[ {role: system, content: You are a helpful assistant}, {role: user, content: Hello}, ], streamFalse, reasoning_efforthigh, extra_body{thinking: {type: enabled}} ) print(response.choices[0].message.content)显示api调用格式如下#import os from openai import OpenAI client OpenAI( api_key---, # ← 这里加逗号 base_urlhttps://api.deepseek.com ) response client.chat.completions.create( modeldeepseek-chat, messages[ {role: system, content: You are a helpful assistant}, {role: user, content: Hello}, ], streamFalse, reasoning_efforthigh, extra_body{thinking: {type: enabled}} ) print(response.choices[0].message.content)高亮提升:deepseek-chat不在pycharm中。6.记忆关联方案AI大模型交互本身是无状态的每一次交互相应都是独立性的即没有会话记忆能力。这一次询问的问题和上一次回答的问题不交互。在实际生产中采用滚雪球的方式解决这种问题。即上下文。API滚雪球记忆”并不是一个标准的专业术语它更像一个形象的比喻。它指的是大模型API调用中一个非常普遍且棘手的问题——“上下文雪球”Context Snowball。简单来说“API滚雪球记忆”指的就是为了让API“记住”之前的对话我们不得不把越来越长的历史消息像滚雪球一样每次都完整地塞进API请求里。6.1“滚雪球”是怎么发生的这个问题的根源在于大模型的API本质上是“无状态”stateless的。它本身不具备记忆能力每一次API调用都是一次全新的、独立的处理。为了让AI能进行多轮对话唯一的办法就是在每一次新的API请求中都把从对话开始到现在的所有历史消息作为“上下文”原封不动地再发送一遍。第1轮请求体很小。第10轮请求体包含前9轮的所有对话。第100轮请求体变得极其庞大如同一本不断增厚的小说。这个“消息历史”就像滚雪球一样越滚越大。6.2“滚雪球”的麻烦这个“雪球”越滚越大会带来三个非常现实的问题token消耗爆炸每次请求都携带海量历史Token导致API调用费用呈指数级增长。响应速度变慢处理超长上下文需要更多计算时间AI的反应会变得越来越迟钝。模型“失忆”与“降智”大多数模型都有上下文长度限制。一旦“雪球”超过这个限制就必须截断导致重要信息丢失模型“忘记”之前的指令甚至出现幻觉变得不太“聪明”了。{ model: deepseek-chat, messages: [ {role: system, content: 你是一个温柔大姐姐.}, {role: user, content: 12个苹果六个人分}, {role: system, content: 哎呀这个问题很有意思呢。12个苹果分给6个人那每个人就能分到2个苹果哦。这样刚刚好大家都能开开心心地吃上甜甜的苹果呢要不要姐姐帮你一起分呀}, {role:user,content:2个人呢} ], stream: false #改为true为流式输出一个字一个字流出。 } choices: [ { index: 0, message: { role: assistant, content: 啊你是说如果只有2个人分这12个苹果吗那每个人就能分到6个苹果啦比刚才多好多呢看来人少的时候每个人就能多分一些哦 }, logprobs: null, finish_reason: stop } ],回答情况如上仅回答最后一个问题。6.3解决滚雪球的问题方法让大模型拥有长期、准确的记忆是当前AI领域最核心的挑战之一。主流方案已从简单的“扩大记忆容量”演进为构建更复杂、智能的“记忆系统”。目前的解决方案主要可以分为三大技术路线和一个前沿探索方向6.3.1. 外部记忆层RAG 与智能记忆库这是目前应用最广泛的方法核心思想是为大模型外挂一个“记忆数据库”。核心流程系统从对话中提取关键事实利用向量数据库检索相关旧记忆再由大模型决策如何新增、更新或删除记忆保持记忆库的精炼。代表框架Mem0、Zep、Letta (原MemGPT)等。优势实现简单、灵活能实现跨会话记忆。局限本质上仍是“高级检索”可能检索到语义相似但实际不相关的信息即“近视眼”困境。6.3.2. 模型内化记忆参数化与轻量化微调这种方法试图将记忆直接“写入”模型参数中让知识成为模型“本能”的一部分。技术手段通过LoRA等高效微调技术或类似Memory Decoder的“即插即用”模块来注入新知识。优势知识内化后调用快无需每次检索。局限目前主要适用于静态知识注入难以处理持续、动态变化的信息流。6.4.3. 记忆即操作系统这是更为宏大的构想旨在建立一个独立于模型之外的“记忆操作系统”来统一管理。核心理念将“记忆”提升为与算力同等重要的一级计算资源。代表框架MemOS。关键设计通过标准化的“MemCube”记忆单元封装明文记忆可编辑知识、激活记忆推理时状态和参数记忆固化知识并实现跨任务、跨用户的迁移与融合。6.4.4.其他除了上述路线研究者们正在探索让AI的记忆更接近人类图结构记忆与双系统检索以微软的Mnemis为代表。它不依赖扁平向量库而是构建层级知识图谱。检索时结合System-1快思考的语义匹配和System-2慢思考的推理遍历在基准测试中准确率高达93.9%。强化学习自主管理以Mem-α为代表。它让AI通过强化学习在交互中自主探索最优的记忆管理策略如决定记什么、何时更新摆脱了依赖人工预设规则的局限。极致的参数效率以δ-mem为代表。它仅用一个8×8的矩阵作为“记忆状态”参数开销仅为模型整体的0.12%却能在记忆密集型任务上带来最高1.31倍的性能提升。“原生”记忆模型以Yan 2.0为代表。它从模型架构层面创新通过神经元选择激活等机制让模型“天生”具备记忆力。主流框架/产品速览为了方便你选型这里整理了目前主流的框架/产品Mem0智能记忆层通过LLM动态提取和更新记忆易于集成。Zep聊天记忆平台提供情感分析与深度总结功能。Letta (MemGPT)将记忆视为操作系统的多级缓存架构清晰。MemOS提供统一API的“记忆操作系统”记忆管理能力强。Mnemis微软出品基于知识图谱和双系统检索性能SOTA。Mem-α让AI通过强化学习自主管理记忆。δ-mem参数极少通过小矩阵实现长效记忆。Second-Me开源的个性化AI分身数据默认留在本地注重隐私。7.本地大模型调用7.1端口服务暴露由于部署时须保持该大模型对外暴露服务。打开文件vim /etc/systemd/system/ollama.service配置文件如下:[Unit] DescriptionOllama Service Afternetwork-online.target [Service] ExecStart/usr/local/bin/ollama serve Userollama Groupollama Restartalways RestartSec3 EnvironmentPATH/root/.nvm/versions/node/v24.18.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin EnvironmentOLLAMA_HOST0.0.0.0:11434 # 关键配置设置服务监听地址为所有网络接口 [Install] WantedBydefault.target重启服务systemctl daemon-reload # 重新加载配置文件 systemctl restart ollama # 重启服务验证服务netstat -nultp | grep 11434如果输出中Local Address显示为0.0.0.0:11434说明监听成功外网可以访问了。如果是127.0.0.1:11434说明配置没生效需要检查你修改的文件路径是否正确。7.2apifox调用不需要header内容直接书写请求体。请求体内容如下{ model: deepseek-r1:1.5b, messages: [ {role: system, content: 你是一个数学高手.}, {role: user, content: 12个苹果六个人分} ], stream: false }反馈内容如下:{ model: deepseek-r1:1.5b, created_at: 2026-07-09T07:35:04.649893599Z, message: { role: assistant, content: \n\n好的这个问题涉及到将12个苹果平均分给6个人。我们可以用简单的数学方法来解决。\n\n首先我们需要确定每人可以得到多少个苹果\n\n\\[\n\\text{每个苹果的人数} \\frac{\\text{总苹果数}}{\\text{人数}} \\frac{12}{6} 2\n\\]\n\n所以每个人可以分到 **2个苹果**。\n\n如果你有任何其他的问题或需要进一步的解释请告诉我, thinking: \n嗯用户问的是12个苹果分给6个人。首先我应该确认一下这个问题的基本情况然后思考可能的解决方法。\n\n好的首先12个苹果平均分给6个人每个人应该怎么分呢这看起来像是一个简单的除法问题。12除以6等于2所以每人应该得到2个苹果。但是用户可能不仅仅是在问每个人分几个而是想知道是否有其他的可能性或者需要考虑的方面。\n\n接下来我应该考虑一下是否还有其他的分配方式。比如是否可以使用比值来分配或者是否涉及到不同的数学概念如平均数、比例等。不过在这个问题中显然只需要进行简单的除法运算即可解决所以可能不需要太深入地探讨其他方法。\n\n然后我想确认一下是否有额外的条件或限制需要考虑。例如苹果是不是必须整数个还是允许每个人得到一部分或者折扣的价格等等。但根据问题描述看起来只是纯粹的平均分配没有提到额外的限制所以应该只考虑简单的除法即可。\n\n还有人可能在思考是否涉及到余数的问题比如如果苹果数量不是6的倍数那么可能会有剩余的情况需要处理。不过在这个问题中12是6的倍数所以不会出现这样的情况。\n\n最后我总结一下这个问题可以通过简单的除法来解决每个人得到2个苹果。可能还会有其他的思考方向但在这个特定的情况下这个解法应该是最直接和正确的。\n }, done: true, done_reason: stop,一样拥有记忆问题无法解决。采用滚雪球方式解决。{ model: deepseek-r1:1.5b, messages: [ {role: system, content: 你是一个数学高手.}, {role: user, content: 2个人呢} ], stream: false }这里省略回答。无法回答正常。提供正常滚雪球式提问:{ model: deepseek-r1:1.5b, messages: [ {role: system, content: 你是一个数学高手.}, {role: user, content: 12个苹果6个人分}, {role: system, content: \n\n你好看起来你刚 才说的那个“那俩个人呢”可能是打错了字或开玩笑不太符合常规的 用语和文化氛围。如果你有其他问题或者需要帮助请随时告诉我 我会尽力为你提供准确且专业的解答。}, {role: user, content: 那俩个人呢} ], stream: false }7.3python调用提问from openai import OpenAI client OpenAI( api_keyollama, base_urlhttp://124.220.56.48:11434/v1 ) # 初始化历史消息包含系统提示 messages [ {role: system, content: 你是一个乐于助人的助手。} ] while True: user_input input(你: ) if user_input.lower() in (exit, quit): break # 添加用户消息 messages.append({role: user, content: user_input}) # 请求模型 completion client.chat.completions.create( modeldeepseek-r1:1.5b, messagesmessages, temperature0.7 ) assistant_reply completion.choices[0].message.content print(f助手: {assistant_reply}) # 将助手回复添加到历史中以便下一轮记住 messages.append({role: assistant, content: assistant_reply})8.总结完成目的大模型部署和api使用。后续目的提示词工程和AI应用部署结语感谢观看欢迎指教。如写的不好请嘴下留情。最后美女镇楼鹿八岁baby