
ChatGLM-6B实战教程使用curl/postman调用REST API实现程序集成1. 课程介绍大家好今天我们来学习如何通过curl和Postman调用ChatGLM-6B的REST API接口实现程序化集成。无论你是开发工程师、测试人员还是想要将AI对话能力集成到自己系统中的技术爱好者这篇教程都能帮你快速上手。ChatGLM-6B是清华大学KEG实验室与智谱AI联合训练的开源双语对话模型拥有62亿参数支持中英文智能对话。通过本教程你将学会如何启动ChatGLM-6B的API服务使用curl命令行工具调用对话接口使用Postman图形化工具测试API处理常见的API调用问题和错误不需要深厚的AI背景只要会基本的命令行操作和HTTP请求概念就能跟着教程一步步完成集成。2. 环境准备与API服务启动在开始调用API之前我们需要先确保ChatGLM-6B服务已经正确启动并暴露了API接口。2.1 启动ChatGLM-6B服务首先通过SSH连接到你的服务器然后启动ChatGLM服务# 启动ChatGLM服务 supervisorctl start chatglm-service # 查看服务状态确认是否正常运行 supervisorctl status chatGLM-service # 实时查看服务日志 tail -f /var/log/chatglm-service.log如果看到服务状态为RUNNING并且日志中没有错误信息说明服务启动成功。2.2 确认API端口映射ChatGLM-6B默认在服务器的7860端口提供服务。为了从本地访问需要建立SSH隧道# 将远程服务器的7860端口映射到本地的7860端口 ssh -L 7860:127.0.0.1:7860 -p 你的SSH端口 root你的服务器地址映射成功后你本地的http://127.0.0.1:7860就对应了远程服务器的服务。2.3 验证服务可用性打开浏览器访问http://127.0.0.1:7860如果能看到ChatGLM的Web界面说明服务部署成功可以开始API调用了。3. 理解ChatGLM-6B的API接口在开始编码之前我们先了解一下ChatGLM-6B提供的API接口规范。3.1 核心对话接口ChatGLM-6B主要通过一个统一的对话端点提供服务API地址:http://127.0.0.1:7860/chat请求方法: POSTContent-Type:application/json3.2 请求参数说明调用对话接口时需要传递JSON格式的请求体包含以下参数参数名类型必填说明默认值querystring是用户输入的对话内容无historyarray否对话历史记录[]temperaturefloat否生成温度控制创造性0.7top_pfloat否核采样概率0.93.3 响应格式API调用成功后会返回JSON格式的响应{ response: 模型生成的回复内容, history: [[用户问题, 模型回答]], status: 200, time: 2023-11-15 10:30:45 }4. 使用curl调用ChatGLM APIcurl是一个强大的命令行工具适合快速测试和自动化脚本集成。4.1 基础对话调用最简单的调用方式只传递用户问题curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d { query: 你好请介绍一下你自己 }执行这个命令后你会看到类似这样的响应{ response: 你好我是ChatGLM-6B一个由清华大学KEG实验室和智谱AI共同训练的开源对话模型。我拥有62亿参数支持中英文双语对话能够回答各种问题、提供信息帮助、进行创意写作等。很高兴为你服务, history: [[你好请介绍一下你自己, 你好我是ChatGLM-6B...]], status: 200, time: 2023-11-15 10:32:18 }4.2 带历史记录的连续对话如果要进行多轮对话需要传递历史记录curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d { query: 那你能帮我写一段Python代码吗, history: [ [你好请介绍一下你自己, 你好我是ChatGLM-6B...] ] }4.3 调整生成参数通过temperature参数控制回答的创造性curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d { query: 写一首关于春天的诗, temperature: 0.9 }temperature值越高最大1.0回答越有创造性值越低最小0.1回答越保守和确定。4.4 保存响应到文件对于长的响应可以保存到文件中curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d {query: 请详细解释深度学习的基本原理} \ -o response.json5. 使用Postman调用ChatGLM APIPostman提供了图形化界面更适合调试和探索API。5.1 设置Postman请求创建新请求打开Postman点击New → Request设置请求方法选择POST输入URLhttp://127.0.0.1:7860/chat设置Headers添加Content-Type为application/json5.2 配置请求体在Body标签页中选择raw和JSON格式输入JSON请求体{ query: 如何学习人工智能, temperature: 0.7 }5.3 发送请求并查看响应点击Send按钮Postman会显示服务器响应状态码200表示成功响应体JSON格式的模型回复响应时间显示API调用耗时5.4 保存请求为集合对于常用的API调用可以保存到Collection中方便后续使用点击Save按钮输入请求名称如ChatGLM基础对话选择或创建Collection进行保存可以添加测试用例和预请求脚本5.5 环境变量配置如果需要在不同环境间切换可以配置环境变量点击右上角的Environments创建新环境如ChatGLM-Local添加变量base_url http://127.0.0.1:7860在请求中使用{{base_url}}/chat6. 实战案例编程辅助对话让我们通过一个实际案例来演示如何用API获取编程帮助。6.1 请求代码示例curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d { query: 请用Python写一个函数计算斐波那契数列的第n项, temperature: 0.3 }6.2 预期响应模型会返回详细的代码示例和解释{ response: 以下是一个计算斐波那契数列第n项的Python函数\n\npython\ndef fibonacci(n):\n if n 0:\n return \请输入正整数\\n elif n 1:\n return 0\n elif n 2:\n return 1\n else:\n a, b 0, 1\n for _ in range(n - 2):\n a, b b, a b\n return b\n\n# 测试函数\nprint(fibonacci(10)) # 输出34\n\n\n这个函数使用了迭代方法时间复杂度为O(n)空间复杂度为O(1)。, history: [[请用Python写一个函数计算斐波那契数列的第n项, 以下是一个计算斐波那契数列第n项的Python函数...]], status: 200, time: 2023-11-15 10:45:22 }6.3 继续深入提问基于之前的回答继续提问curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d { query: 能不能用递归实现并比较两种方法的优缺点, history: [ [请用Python写一个函数计算斐波那契数列的第n项, 以下是一个计算斐波那契数列第n项的Python函数...] ] }7. 常见问题与解决方案在实际使用API过程中可能会遇到一些问题这里提供解决方案。7.1 连接拒绝错误如果出现连接错误检查以下几点# 检查服务是否运行 supervisorctl status chatglm-service # 检查端口映射是否正确 netstat -tlnp | grep 7860 # 检查防火墙设置 iptables -L -n7.2 请求超时处理对于长文本生成可能需要调整超时设置# curl设置超时时间秒 curl -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d {query: 长问题...} \ --max-time 120 # 120秒超时7.3 内存不足问题如果遇到内存错误可以尝试以下方法减少输入文本长度调整生成参数限制输出长度确保服务器有足够的内存资源7.4 响应解析错误确保正确解析JSON响应import json import requests response requests.post(http://127.0.0.1:7860/chat, json{query: 你好}) data response.json() if response.status_code 200: print(data[response]) else: print(错误:, data.get(error, 未知错误))8. 进阶使用技巧掌握了基础调用后来看看一些进阶的使用技巧。8.1 批量处理多个问题使用脚本批量处理多个问题#!/bin/bash questions( 什么是机器学习 解释一下监督学习和无监督学习的区别 深度学习有哪些应用场景 ) for question in ${questions[]}; do echo 问题: $question curl -s -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d {\query\: \$question\} | jq -r .response echo -e \n---\n done8.2 自动化测试脚本编写Python脚本进行自动化测试import requests import time def test_chatglm_api(questions): base_url http://127.0.0.1:7860/chat history [] for i, question in enumerate(questions, 1): print(f\n问题 {i}: {question}) payload { query: question, history: history, temperature: 0.7 } start_time time.time() response requests.post(base_url, jsonpayload) end_time time.time() if response.status_code 200: data response.json() print(f回答: {data[response]}) print(f耗时: {end_time - start_time:.2f}秒) # 更新历史记录 history.append([question, data[response]]) else: print(f错误: {response.status_code}) break # 测试问题列表 test_questions [ 你好请自我介绍, Python是什么, 如何学习编程 ] test_chatglm_api(test_questions)8.3 性能监控监控API性能指标# 使用time命令测量响应时间 time curl -s -X POST http://127.0.0.1:7860/chat \ -H Content-Type: application/json \ -d {query: 测试性能} /dev/null9. 总结通过本教程我们全面学习了如何使用curl和Postman调用ChatGLM-6B的REST API接口。现在你应该能够正确启动和配置ChatGLM-6B的API服务使用curl命令行工具进行基本的API测试和自动化调用使用Postman图形化界面调试和探索API功能处理常见的API调用问题和错误情况实现进阶的集成技巧如批量处理和自动化测试实际集成到项目中时记得处理异常情况、设置合理的超时时间并根据具体需求调整生成参数。ChatGLM-6B的API接口简单易用但功能强大能够为你的应用添加智能对话能力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。