LangChain进阶技巧:提高聊天机器人性能的策略[第三课]

LangChain应运而生,为开发者们提供了一种高效、便捷的工具,助力他们构建出功能强大的大型语言模型应用。本文将带您走进LangChain的世界,揭秘其背后的技术原理,探讨如何利用这一利器来拓展语言模型的无限可能。通过丰富的实例分析和实战教程,让您从入门到精通,轻松掌握LangChain的核心技能,为您的AI项目插上翅膀,迈向成功的彼岸。
在这里插入图片描述

安装智谱清言和langchain_community:

pip install langchain langchain_community
pip install --upgrade httpx httpx-sse PyJWT

提示用户输入智谱请言的KEY(去官网申请):

import os
import getpass
if "ZHIPUAI_API_KEY" not in os.environ or not os.environ["ZHIPUAI_API_KEY"]:# 使用getpass安全地提示用户输入api_key = getpass.getpass(prompt='Enter your API key: ')os.environ["ZHIPUAI_API_KEY"] = api_key

调用智谱清言的模型ChatZhipuAI

from langchain_community.chat_models import ChatZhipuAI
from langchain_openai import ChatOpenAImodel = ChatZhipuAI(model="glm-4",temperature=0.5,
)
from langchain_core.messages import HumanMessage
respon = model.invoke([HumanMessage(content="Hi! 我是Bob")])
print(respon)

输出AIMessage对象:

AIMessage(content=‘你好,Bob!有什么我可以帮助你的吗?’, additional_kwargs={}, response_metadata={‘token_usage’: {‘completion_tokens’: 12, ‘prompt_tokens’: 9, ‘total_tokens’: 21}, ‘model_name’: ‘glm-4’, ‘finish_reason’: ‘stop’}, id=‘run-7867a109-53f4-4129-931e-e3d85b77a486-0’)

“model.invoke”的作用

“model.invoke”是一个函数调用,它通常用于触发模型的特定功能。在人工智能对话系统中,这个调用可以是向模型发送一个请求,然后模型会根据请求的内容返回相应的回答。这个过程就像是用户与智能助手之间的对话,用户提出问题,智能助手给出回答。

根据提供的AIMessage对象信息,下面是对各字段的解析说明:

  • content: 这是消息的主要内容,即AI模型生成的文本回复。在这个例子中,AI模型回复了一条问候消息:“你好,Bob!有什么我可以帮助你的吗?”
  • additional_kwargs: 这是一个字典,用于存储额外的参数,这些参数可能会在生成消息时被使用。在这个例子中,additional_kwargs是空的,这意味着没有额外的参数被传递或使用。
  • response_metadata: 这个字段包含了关于消息生成的元数据,它是一个字典,包含了以下几个键:
    • token_usage: 描述了生成消息时使用的令牌数量。它包含以下子键:
      • completion_tokens: 完成令牌的数量,即用于生成最终回复的令牌数量。在这个例子中,使用了12个完成令牌。
      • prompt_tokens: 提示令牌的数量,即输入到模型中的令牌数量。在这个例子中,使用了9个提示令牌。
      • total_tokens: 总令牌数量,即完成令牌和提示令牌的总和。在这个例子中,总共使用了21个令牌。
    • model_name: 表示生成消息所使用的AI模型的名称。在这个例子中,模型名称是"glm-4"。
    • finish_reason: 描述了生成过程结束的原因。在这个例子中,finish_reason是"stop",这意味着生成过程是因为达到了某种停止条件(例如生成了足够数量的令牌或遇到了特定的结束标记)而停止的。
  • id: 这是一个唯一的消息标识符,用于区分不同的消息实例。在这个例子中,消息的ID是"run-7867a109-53f4-4129-931e-e3d85b77a486-0"。
    综上所述,这个AIMessage对象代表了一条由"glm-4"模型生成的问候消息,该消息使用了21个令牌,其中包括12个完成令牌和9个提示令牌,并且生成过程是因为达到了停止条件而结束的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551361.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

“DNA亲和纯化测序:汇智生物的精准分析“

🌱 汇智生物 | 专注农业&植物基因组分析 🌱 🎓 教授【优青】团队亲自指导!提供专业实验设计、数据分析、SCI论文辅助等全方位服务。精准高效,为农植物科研保驾护航! 🔬 专业实验外包服务&am…

正点原子阿波罗STM32F429IGT6移植zephyr rtos(二)---使用I2C驱动MPU6050

硬件平台:正点原子阿波罗STM32F429IGT6 zephyr版本:Zephyr version 3.7.99 开发环境:ubuntu 24.4 zephyr驱动开发与之前接触到的开发方式可能都不一样,更像是linux驱动开发,zephyr源码里边其实已经有写好的I2C和MPU60…

ST-GCN模型实现花样滑冰动作分类

加入深度实战社区:www.zzgcz.com,免费学习所有深度学习实战项目。 1. 项目简介 本项目实现了A042-ST-GCN模型,用于对花样滑冰动作进行分类。花样滑冰作为一项融合了舞蹈与竞技的运动,其复杂的动作结构和多变的运动轨迹使得动作识别成为一个具…

CRM如何实现对客户信息的全局管理?

在知识产权与科技服务领域中,企业如何精准把握客户需求,高效管理知识产权资产,成为了决定其竞争力的关键因素。传统的CRM虽在一定程度上提升了客户管理效率,但在面对知识产权这一复杂且多变的领域时,往往显得力不从心。…

Html jquery下拉select美化插件——selectFilter.js

1. Html jquery下拉select美化插件——selectFilter.js jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互,使得开发者能更高效地构建交互式网页。在本案例中,jquery.selectlist.js插件正是基于jQuery构建的&…

滑动窗口->dd爱框框

1.题目: 2.题解: 2.1为什么用滑动窗口优化: 因为元素都是大于0的 所以:当找到大于等于x的值时,right可以不用返回 两个指针都往后走;因此可以使用滑动窗口优化暴力解法 2.2:滑动窗口具体使用步…

python flask实现mock接口

在 Flask 中实现模拟(mock)接口通常是为了在没有实际后端服务的情况下进行前端开发、单元测试或集成测试。你可以创建一个简单的 Flask 应用来模拟特定的 API 行为,返回预设的数据。以下是如何使用 Flask 实现一个 mock 接口的示例&#xff1…

NAT模式 LVS负载均衡群集部署

目录 NAT模式 LVS负载均衡群集部署 1.关闭所有虚拟机的防火墙和核心防护 2.部署共享存储nfs(ip:192.168.110.20) 3.配置nginx节点服务器(192.168.110.70,192.168.110.80) 4.配置tomcat节点服务器(192.…

c++第十二章续(队列结构类模拟)

队列类 设计类,需要开发公有接口和私有实现 Queue类接口 公有接口: 默认初始化,和可以用显式初始化覆盖默认值 Queue类的实现 如何表示队列数据: 一种方法是使用new动态分配一个数组,它包含所需的元素数。不过&…

知乎信息流广告营销获客投放策略!

知乎内容营销已成为品牌吸引目标客户、提升品牌知名度的重要手段,吸引了众多企业的关注。为了更好地利用知乎这一平台进行品牌推广,越来越多的企业开始关注知乎信息流广告的投放。云衔科技通过知乎信息流广告实现高效的营销获客,为企业提供知…

如何实现一个优秀的散列表!

文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 前言 假设现在有一篇很长的…

锦囊妙计系列:没有项目支撑的情况下怎么从java到Python平稳过度并就业成功

从Java转向Python,并在没有项目支撑的情况下平稳过渡并实现就业,尽管有挑战,但完全可以通过系统学习、项目积累、技能展示和策略性求职来达成目标。以下是详细的步骤和策略,帮助你在不依赖现有项目的情况下实现从Java到Python的成…

24.9.29

星期一: 补 cf round974 div3 H cf传送门 题意:给一数组,q次询问,每次询问l-r区间内是否每个数字都出现偶数次 终于找到了梦中的随机数函数,这随机数真是非常顶级口牙 思路&a…

在线SQL模拟器

前言 有时候我们想学习下SQL,但是缺少数据库环境,多种数据库类型,MySQL,SQL server,Oracle,PostgreSQL等等,自己安装?耗时费力,占用电脑资源,要是有一个在线…

理解 Vue 的 setup 应用程序钩子

title: 理解 Vue 的 setup 应用程序钩子 date: 2024/9/30 updated: 2024/9/30 author: cmdragon excerpt: 摘要:本文详细介绍了Vue 3中setup函数的应用,包括其概念、特性、使用方法及重要性。setup函数作为组合API的核心,在组件实例化前被调用,用于设置响应式状态、计算…

如何构建一个生产级的AI平台(2)?

书接上回,继续往下讲,本节会说一下如何给大模型应用构建安全防护机制 为大模型应用构建安全防护 构建安全防护有助于降低 AI 风险,不仅可以保护您的用户,还可以保护您(开发人员)。只要有可能发生故障,就应…

Redis篇(应用案例 - UV统计)(持续更新迭代)

目录 一、HyperLogLog 二、测试百万数据的统计 一、HyperLogLog 首先我们搞懂两个概念: UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。 1天内同一个用户多次访问该网站,只记录…

大盘点|9月独家爆款SVG模版(互斥伸长、扑克出牌、预感应滑动等)

九月即将结束,黑科技 SVG 编辑器作为业界天花板,在本月又发明了哪些一骑绝尘的 SVG 特效大杀器?一起来看看我们的盘点与推荐吧!如需体验,不妨直接登陆黑科技编辑器一探究竟。 1️⃣互斥伸长/互斥切换-伸长 E2 平台的…

C# C++ 笔记

第一阶段知识总结 lunix系统操作 1、基础命令 (1)cd cd /[目录名] 打开指定文件目录 cd .. 返回上一级目录 cd - 返回并显示上一次目录 cd ~ 切换到当前用户的家目录 (2)pwd pwd 查看当前所在目录路径 pwd -L 打印当前物理…

如何使用 Python 读取数据量庞大的 excel 文件

使用 pandas.read_excel 读取大文件时,的确会遇到性能瓶颈,特别是对于10万行20列这种规模的 .xlsx 文件,常规的 pandas 方法可能会比较慢。 要提高读取速度,关键是找到更高效的方式处理 Excel 文件,特别是在 Python 的…