Ollama运行ChatGLM3-6B-128K实操手册:流式响应、token统计、stop_token自定义设置

📅 发布时间:2026/7/6 3:47:46 👁️ 浏览次数:
Ollama运行ChatGLM3-6B-128K实操手册:流式响应、token统计、stop_token自定义设置
Ollama运行ChatGLM3-6B-128K实操手册流式响应、token统计、stop_token自定义设置1. 快速了解ChatGLM3-6B-128KChatGLM3-6B-128K是ChatGLM系列的最新成员专门针对长文本处理进行了深度优化。这个模型在保持前代优秀特性的基础上将上下文处理能力从8K扩展到了惊人的128K相当于可以处理一本中等厚度书籍的内容量。核心优势超长文本处理专门针对128K长度上下文训练位置编码和训练方法都做了针对性优化多场景适用不仅支持常规对话还原生支持工具调用、代码执行和智能体任务性能强劲在语义理解、数学推理、代码生成等多个维度表现优异完全开源学术研究完全免费商业使用只需简单登记选择建议如果你的应用场景中文本长度通常在8K以内使用标准版ChatGLM3-6B就足够了如果需要处理更长的文档、论文、代码库等内容128K版本会是更好的选择。2. 环境准备与快速部署2.1 系统要求与安装在开始之前确保你的系统满足以下基本要求操作系统Linux/Windows/macOS均可内存至少16GB RAM推荐32GB以上存储模型文件约12GB预留20GB空间网络需要能正常访问模型仓库Ollama的安装非常简单一行命令就能搞定# Linux/macOS安装 curl -fsSL https://ollama.ai/install.sh | sh # Windows安装 # 下载安装包从官网 https://ollama.ai/download安装完成后验证是否成功ollama --version如果显示版本号说明安装成功。2.2 拉取ChatGLM3-6B-128K模型通过Ollama获取模型非常简单不需要复杂的配置# 拉取ChatGLM3-6B-128K模型 ollama pull entropyyue/chatglm3这个过程会自动下载约12GB的模型文件根据你的网络速度可能需要等待一段时间。下载完成后你可以查看已安装的模型ollama list应该能看到entropyyue/chatglm3在模型列表中。3. 基础使用与界面操作3.1 启动模型服务模型拉取完成后可以直接运行# 直接运行模型进行对话 ollama run entropyyue/chatglm3这会启动一个交互式对话界面你可以直接输入问题与模型交流。3.2 Web界面使用指南除了命令行Ollama还提供了友好的Web界面访问入口打开浏览器访问http://localhost:11434默认端口选择模型在界面顶部找到模型选择下拉框选择ChatGLM3从列表中选择EntropyYue/chatglm3模型开始对话在下方输入框中提问模型会实时响应Web界面的好处是交互更直观响应结果格式化显示适合不熟悉命令行的用户使用。4. 高级功能实战详解4.1 流式响应配置与使用流式响应是大型语言模型的重要特性它可以实现逐字输出效果提升用户体验。通过Ollama使用流式响应非常简单import requests import json def stream_chat(prompt): url http://localhost:11434/api/generate payload { model: entropyyue/chatglm3, prompt: prompt, stream: True # 启用流式响应 } response requests.post(url, jsonpayload, streamTrue) for line in response.iter_lines(): if line: data json.loads(line.decode(utf-8)) if response in data: print(data[response], end, flushTrue) if data.get(done, False): print(f\n[生成完成]) # 使用示例 stream_chat(请用中文介绍人工智能的发展历史)流式响应的优势实时反馈用户不需要等待完整生成就能看到部分结果降低延迟特别是生成长文本时体验明显更好资源友好可以中途停止生成节省计算资源4.2 Token统计与性能监控了解token使用情况对于优化成本和性能很重要。Ollama在响应中提供了详细的token统计def get_token_stats(prompt): url http://localhost:11434/api/generate payload { model: entropyyue/chatglm3, prompt: prompt, stream: False } response requests.post(url, jsonpayload) data response.json() print(f提示词token数: {data.get(prompt_eval_count, 0)}) print(f生成内容token数: {data.get(eval_count, 0)}) print(f总token消耗: {data.get(prompt_eval_count, 0) data.get(eval_count, 0)}) print(f生成时间: {data.get(total_duration, 0) / 1e9:.2f}秒) print(f生成速度: {data.get(eval_count, 0) / (data.get(total_duration, 1) / 1e9):.2f} token/秒) # 使用示例 get_token_stats(解释一下机器学习中的过拟合现象)关键指标解读prompt_eval_count输入提示词消耗的token数eval_count生成内容消耗的token数total_duration总处理时间纳秒速度计算eval_count / (total_duration / 1e9) token/秒4.3 Stop Token自定义设置Stop token用于控制生成过程的停止条件在很多场景下非常有用def generate_with_stop_tokens(prompt, stop_tokens): url http://localhost:11434/api/generate payload { model: entropyyue/chatglm3, prompt: prompt, options: { stop: stop_tokens }, stream: False } response requests.post(url, jsonpayload) return response.json()[response] # 使用示例 - 多种停止条件设置 prompt 写一个关于春天的诗歌 # 示例1遇到句号就停止 result1 generate_with_stop_tokens(prompt, [。]) print(遇到句号停止:, result1) # 示例2多个停止词 result2 generate_with_stop_tokens(prompt, [。, !, ?, \n\n]) print(多条件停止:, result2) # 示例3特定内容停止 result3 generate_with_stop_tokens(介绍北京的名胜但不要提到故宫, [故宫]) print(特定内容停止:, result3)Stop Token的实用场景格式控制确保生成内容符合特定格式要求内容过滤避免生成不希望出现的内容长度控制防止生成过长或过短的内容多轮对话在对话中自然截断生成内容5. 实战案例完整应用示例让我们通过一个完整的例子来演示如何将这些功能结合起来使用import requests import json import time class ChatGLMClient: def __init__(self, model_nameentropyyue/chatglm3): self.model model_name self.base_url http://localhost:11434/api def generate(self, prompt, max_tokens500, temperature0.7, stop_tokensNone, streamFalse): payload { model: self.model, prompt: prompt, options: { num_predict: max_tokens, temperature: temperature, stop: stop_tokens or [] }, stream: stream } if stream: return self._stream_generate(payload) else: return self._batch_generate(payload) def _batch_generate(self, payload): response requests.post(f{self.base_url}/generate, jsonpayload) data response.json() # 输出统计信息 stats { prompt_tokens: data.get(prompt_eval_count, 0), generated_tokens: data.get(eval_count, 0), total_time: data.get(total_duration, 0) / 1e9, response: data.get(response, ) } print(f\n生成统计: {stats[prompt_tokens]}输入token, f{stats[generated_tokens]}输出token, f耗时{stats[total_time]:.2f}秒) return stats[response] def _stream_generate(self, payload): response requests.post(f{self.base_url}/generate, jsonpayload, streamTrue) full_response start_time time.time() for line in response.iter_lines(): if line: data json.loads(line.decode(utf-8)) if response in data: print(data[response], end, flushTrue) full_response data[response] if data.get(done, False): end_time time.time() print(f\n\n流式生成完成耗时{end_time - start_time:.2f}秒) return full_response # 使用示例 client ChatGLMClient() # 案例1技术文档总结 doc 人工智能是计算机科学的一个分支它企图了解智能的实质并生产出一种新的能以人类智能相似的方式做出反应的智能机器该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来理论和技术日益成熟应用领域也不断扩大可以设想未来人工智能带来的科技产品将会是人类智慧的容器。 summary client.generate(f请用一句话总结以下内容{doc}, stop_tokens[。, \n], max_tokens100) print(f\n总结结果: {summary}) # 案例2创意写作带流式输出 print(\n创意写作流式输出:) client.generate(写一个关于未来城市的短篇故事开头, streamTrue, temperature0.8, max_tokens200)6. 常见问题与解决方案在实际使用过程中你可能会遇到一些常见问题这里提供解决方案问题1模型响应速度慢原因硬件资源不足或提示词过长解决减少max_tokens参数使用stop tokens提前终止升级硬件问题2生成内容不符合预期原因温度参数设置不合适或提示词不够明确解决调整temperature参数0.1-0.3更确定0.7-1.0更创意优化提示词问题3内存不足错误原因系统内存不足或同时运行多个模型实例解决关闭其他应用增加系统内存使用轻量级模型问题4流式响应中断原因网络不稳定或超时设置过短解决检查网络连接增加超时时间使用重试机制# 带重试机制的生成函数 def generate_with_retry(prompt, max_retries3): for attempt in range(max_retries): try: return client.generate(prompt) except requests.exceptions.RequestException as e: print(f尝试 {attempt 1} 失败: {e}) time.sleep(2) # 等待2秒后重试 return 生成失败请检查网络连接7. 总结通过本教程你应该已经掌握了如何使用Ollama部署和操作ChatGLM3-6B-128K模型。这个组合提供了强大的长文本处理能力加上灵活的控制选项能够满足大多数应用场景的需求。关键收获学会了Ollama的基本安装和模型管理掌握了流式响应的配置和使用提升用户体验了解了token统计方法能够监控和优化资源使用学会了使用stop tokens精确控制生成过程获得了完整的代码示例和实战经验下一步建议尝试不同的temperature设置感受生成内容的多样性实验更复杂的stop tokens组合实现精确的内容控制探索模型的其他参数如top_p、repeat_penalty等考虑将模型集成到你的实际项目中ChatGLM3-6B-128K作为一个强大的开源模型结合Ollama的易用性为开发者提供了极其便利的大模型使用体验。无论是研究实验还是产品开发这都是一个值得深入探索的技术组合。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。