当前位置: 首页 > ai >正文

GLM调用三种方式及多轮对话

智谱AI开放平台SDK安装。

智谱AI GLM 

企业中一般使用 环境变量 配置API_KEY

client.chat.completions.create 参数:

该API底层原理——发送HTTP请求

from zhipuai import ZhipuAI
import os
# 使用GLM自己的# api_key = os.getenv('API_KEY')
# print(api_key)
client = ZhipuAI(api_key='0884a4262379e6b9e98d08be606f2192.TOaCwXTLNYo1GlRM')response = client.chat.completions.create(model='glm-4-0520',messages=[{'role': "user", 'content': '请介绍一下大模型的定义?'}],stream=True
)# 流试的输出
for s in response:print(s.choices[0].delta)#print(s.choices[0].delta.content)# print(response)
#
# print(response.choices[0].message.content)

非流式输出(stream!=True)response:

流式输出:一个token 一个token返回。需要循环打印结果。

GLM OpenAI API

from openai import OpenAI
import os
# 使用OpenAI的API# api_key = os.getenv('API_KEY')
# print(api_key)
client = OpenAI(api_key='0884a4262379e6b9e98d08be606f2192.TOaCwXTLNYo1GlRM',base_url='https://open.bigmodel.cn/api/paas/v4/'
)response = client.chat.completions.create(model='glm-4-0520',messages=[{'role': "user", 'content': '北京天气怎么样?'}],# stream=True
)print(response)print(response.choices[0].message.content)

Langchain调用

多轮对话

创建模型
import osfrom langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.messages import HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI# 聊天机器人案例
# 创建模型
model = ChatOpenAI(model='glm-4-0520',temperature='0.6',api_key='0884a4262379e6b9e98d08be606f2192.TOaCwXTLNYo1GlRM',base_url='https://open.bigmodel.cn/api/paas/v4/'
)
Prompt&Chain

# 定义提示模板
prompt_template = ChatPromptTemplate.from_messages([('system', '你是一个乐于助人的助手。用{language}尽你所能回答所有问题。'),MessagesPlaceholder(variable_name='my_msg')
])# 得到链
chain = prompt_template | model# 保存聊天的历史记录
store = {}  # 所有用户的聊天记录都保存到store。key: sessionId,value: 历史聊天记录对象# 此函数预期将接收一个session_id并返回一个消息历史记录对象。
def get_session_history(session_id: str):if session_id not in store:store[session_id] = ChatMessageHistory()return store[session_id]do_message = RunnableWithMessageHistory(chain,get_session_history,input_messages_key='my_msg'  # 每次聊天时候发送msg的key
)config = {'configurable': {'session_id': 'zs1234'}}  # 给当前会话定义一个sessionId# 第一轮
resp1 = do_message.invoke({'my_msg': [HumanMessage(content='你好啊! 我是LaoXiao')],'language': '中文'},config=config
)print(resp1.content)# 第二轮
resp2 = do_message.invoke({'my_msg': [HumanMessage(content='请问:我的名字是什么?')],'language': '中文'},config=config
)print(resp2.content)# 第3轮: 返回的数据是流式的
config = {'configurable': {'session_id': 'zs1234'}}  # 给当前会话定义一个sessionId
for resp in do_message.stream({'my_msg': [HumanMessage(content='请给我讲一个笑话?')], 'language': 'English'},config=config):# 每一次resp都是一个tokenprint(resp.content, end='')

GLM+向量库

 此处和Langchain-构建向量数据库和检索器-CSDN博客一样,只不过这里用的GLM,编码器用的 魔塔社区ModelScopeEmbeddings

import osfrom langchain_chroma import Chroma
from langchain_community.embeddings import ModelScopeEmbeddings
from langchain_core.documents import Document
from langchain_core.messages import HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableWithMessageHistory, RunnableLambda, RunnablePassthrough
from langchain_openai import ChatOpenAI# 聊天机器人案例
# 创建模型
model = ChatOpenAI(model='glm-4-0520',temperature=0,api_key='0884a4262379e6b9e98d08be606f2192.TOaCwXTLNYo1GlRM',base_url='https://open.bigmodel.cn/api/paas/v4/'
)# 如果未来我们采用国内大模型,相关的其他工具最好也是国内
# https://www.modelscope.cn/models/iic/nlp_gte_sentence-embedding_chinese-large/summary
# 在中文环境下推荐使用的Embeddingsembeddings = ModelScopeEmbeddings(model_id='iic/nlp_gte_sentence-embedding_chinese-base')# 实例化一个向量数空间
vector_store = Chroma.from_documents(documents, embedding=embeddings)

http://www.xdnf.cn/news/3156.html

相关文章:

  • 2025.4.27 Vue.js 基础学习笔记
  • using var connection = connectionFactory.CreateConnection(); using var 是什么意思
  • WPACS基于HTML5的DICOM影像浏览
  • 可编辑25页PPT | 企业数字底座:数据中台构建路径、方法和实践
  • D365 开发环境证书到期替换处理
  • 如何在Dify沙盒中安装运行pandas、numpy
  • 基于BM1684X+RK3588的智能工业视觉边缘计算盒子解决方案
  • 【Linux】Linux 系统中,定时任务(计划任务)
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验-pipeline方式(二)
  • SpringCloud微服务知识点
  • 第五部分:进阶项目实战
  • 基于STM32的智能门锁(UCOSlll)
  • 脏读、不可重复读、幻读示例
  • ComputeShader绘制全屏纯色纹理
  • C++入门小馆: 模板
  • AI HR新范式:易路iBuilder如何通过“技术隐身,价值凸显”,成为HR身份转型的好帮手
  • 分享:VTK版本的选择 - WPF空域问题
  • 手动创建一份konga对应helm的chart项目
  • TCP和UDP传输层协议
  • 【论文速读】《Scaling Scaling Laws with Board Games》
  • 后端接口请求http改为https
  • ReentrantReadWriteLock的源码详细剖析
  • Gin 集成 prometheus 客户端实现注册和暴露指标
  • 基于策略模式实现灵活可扩展的短信服务架构
  • 基于vue框架的电影院网上售票系统49iu6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 综合案例建模
  • C++日更八股--day2
  • 婴幼儿急救实训室优化空间布局科学路径5.7
  • 【自然语言处理与大模型】如何获取特定领域的微调数据集?
  • jmeter读取CSV文件中文乱码的解决方案