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

LangChain 摘要 和问答示例

在Azure上的OpenAI端点
注意 OpenAI key 可以用微软 用例【1. 嵌入 ,2. 问答】
1.

import os
import openai
from langchain.embeddings import OpenAIEmbeddings
os.environ["OPENAI_API_KEY"]  = "****"  # Azure 的密钥
os.environ["OPENAI_API_BASE"] = "https://z****/"  # Azure 的终结点
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "****"  # API 版本,未来可能会变
model = "***"  # 模型的部署名
embeddings = OpenAIEmbeddings(engine=model)#text-embedding-ada-002 最好用相同的
text = "你是"
query_result = embeddings.embed_query(text)
doc_result = embeddings.embed_documents([text])
print(doc_result)

结果
2.

import os
import openai
from langchain.embeddings import OpenAIEmbeddings
os.environ["OPENAI_API_KEY"]  = "****"  # Azure 的密钥
os.environ["OPENAI_API_BASE"] = "https://z****/"  # Azure 的终结点
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "****"  # API 版本,未来可能会变
model = "***"  # 模型的部署名
llm = AzureOpenAI(deployment_name=model,model_name="gpt-35-turbo",
)
print(llm("你好"))

在这里插入图片描述

LangChain 和 LLM 最常见的用例之一是摘要。您可以总结任何一段文本,但用例包括总结电话、文章、书籍、学术论文、法律文件、用户历史、表格或财务文件。拥有一个可以快速汇总信息的工具非常有帮助。

  • 深潜- (即将推出)
  • 示例-总结 B2B 销售电话
  • 用例- 总结文章、成绩单、聊天记录、Slack/Discord、客户互动、医学论文、法律文件、播客、推文线程、代码库、产品评论、财务文件

短文本摘要

对于短文的摘要,方法很简单,其实你不需要做任何花哨的事情,只需简单的提示说明即可

from langchain.llms import OpenAI
from langchain import PromptTemplate# 请注意,默认模型已经是,但我在这里明确指出它,以便您以后知道在何处更改它(如果需要)
llm = AzureOpenAI(deployment_name=model,model_name="gpt-35-turbo",
)template = """
%指示:
请总结下面的一段文字。
以 5 岁儿童能理解的方式回答。%文本:
{text}
"""
prompt = PromptTemplate(input_variables=["text"],template=template,
)confusing_text = """
近日深圳市人民政府办公厅正式印发了《深圳市数字孪生先锋城市建设行动计划(2023)》(简称:“计划”),其中对于如何建设城市级数字孪生底座、如何打造万亿级核心产业增加值数字经济高地都列出了执行方式。深圳市一直是国内数字孪生城市建设的“排头兵”,此次“计划”的发布,表明深圳市将在打造“标杆性”数字孪生城市方面继续布局发力,并给出了更加具体的执行措施。在该“计划”发布之前,已有多项数字孪生相关国家级、省级、市级政策文件发布,包括《数字中国建设整体布局规划》、《国务院关于加强数字政府建设的指导意见》(国发〔2022〕14号)、《广东省数字政府改革建设“十四五”规划》(粤府〔2021〕44号)、《深圳市数字政府和智慧城市“十四五”发展规划》。此次“计划”的总体目标是相对量化具体的,总共分为四个大的方向:建设一个一体协同的数字孪生底座、构建不少于十类数据相融合的孪生数据底板、上线承载超百个场景、超千项指标的数字孪生应用、打造万亿级核心产业增加值数字经济高地。接着,“计划”详细阐释了要如何完成这四大目标,具体要做哪些事,同时,“计划”明确了完成每项目标的牵头单位和责任单位,整体来看,牵头单位和责任单位主要以政府部门和国企为主。在建设一体协同的城市级数字孪生底座方面,深圳将建设市区协同、统分结合的全市域时空信息平台(CIM平台),要按照“两级平台、四级应用”架构,打造“1+11+N”CIM平台体系,建设11个区级平台,N个部门级、行业级、重点片区级平台。为了构建泛在实时、全域覆盖的物联感知体系,深圳将实现城市管理、交通、水务、生态环境、应急安全等领域不少于30万个物联感知终端接入,逐步推进28万路摄像头信息融入CIM平台。在上线承载超百个场景、超千项指标的多跨协同数字孪生应用方面,深圳将建设城市级智能网联汽车统一监管平台,推动智能网联汽车高质量集聚发展;深圳将围绕政务服务、出行、住房、医疗、教育、养老等民生服务场景,深度挖掘数字孪生应用场景,让市民群众在智慧城市和数字政府建设中更有获得感。最后,在打造信创驱动、数字赋能的万亿级核心产业增加值数字经济高地方面,深圳将加快推进数字孪生城市建设所需软硬件和底层技术国产化适配,探索鹏城云脑为城市级仿真推演和人工智能应用提供海量图形渲染及AI算力支撑。"""
final_prompt = prompt.format(text=confusing_text)
print(final_prompt)
print ("------- Prompt End -------")
output = llm(final_prompt)
print(output)

结果

较长文本的摘要

此方法也适用于短文本

摘要涉及创建多个较长文档的较小摘要。这对于将长文档提炼成核心信息很有用。

llm = AzureOpenAI(deployment_name=model,model_name="gpt-35-turbo",
)
with open('D:\操作系统\开通openAI embeding.md','r',encoding="utf-8") as file:text = file.read()
print(text[:285])
num_tokens = llm.get_num_tokens(text)
print (f"您的文件中有{num_tokens}个令牌")
text_splitter = RecursiveCharacterTextSplitter(separators=["\n\n", "\n"], chunk_size=4000, chunk_overlap=350)
docs = text_splitter.create_documents([text])
print (f"您现在拥有 {len(docs)} 文档包含段文本")
chain = load_summarize_chain(llm=llm, chain_type='map_reduce',verbose=True) # verbose=True 可选,以查看发送到 LLM 的内容
# 这将运行 3 个文档,总结块,然后得到摘要的摘要。
output = chain.run(docs)
print (output)

结果

使用文档作为上下文的问答

为了使用 LLM 进行问​​答,我们必须:

1.通过LLM相关上下文它需要回答一个问题
2.将我们想要回答的问题传递给它
简化后,这个过程看起来像这样“llm(你的背景+你的问题)=你的答案”

简单问答示例

llm = AzureOpenAI(temperature=0,deployment_name=model,model_name="gpt-35-turbo",
)
context = """
1:可口可乐,价格4元
2:百事可乐,价格4.5元
3:雪碧,价格3.5元
4:脉动,价格6元
5:果趣,价格7元
6:果粒橙,价格5元
"""question = "从中找一个最贵的饮料 给出答案"
output = llm(context + question)
# 我剥离文本以删除前导和尾随空格
print (output.strip())

在这里插入图片描述

随着我们提高我们的复杂性,我们将更多地利用这个约定。

当您需要选择将哪些数据放入上下文中时,困难的部分就出现了。这个研究领域被称为“文档检索”,并与 AI Memory 紧密结合。

相关文章:

LangChain 摘要 和问答示例

在Azure上的OpenAI端点 注意 OpenAI key 可以用微软 用例【1. 嵌入 ,2. 问答】 1. import os import openai from langchain.embeddings import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] "****" # Azure 的密钥 os.environ["OP…...

(32)测距仪(声纳、激光雷达、深度摄影机)

文章目录 前言 32.1 单向测距仪 32.2 全向性近距离测距仪 32.3 基于视觉的传感器 前言 旋翼飞机/固定翼/无人车支持多种不同的测距仪,包括激光雷达(使用激光或红外线光束进行距离测量)、360 度激光雷达(可探测多个方向的障碍…...

教你拥有一个自己的QQ机器人!0基础超详细保姆级教学!基于NoneBot2 Windows端搭建QQ机器人

0.序言 原文链接:教你本地化部署一个QQ机器人本教程主要面向Windows系统用户教程从0开始全程详细指导,0基础萌新请放心食用🍕如果你遇到了问题,请仔细检查是否哪一步有遗漏。如果你确定自己的操作没问题,可以到原文链…...

智能银行卡明细筛选与统计,轻松掌握账户总花销!

作为现代生活的重要组成部分,银行卡成为了我们日常消费和收入的主要途径。但是,当我们需要了解自己的银行卡账户的总花销时,繁琐的明细筛选和统计工作常常让人头疼。现在,让我们向您推荐一款智能银行卡明细筛选与统计工具&#xf…...

SRT服务器SLS

目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTPFLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了…...

Linux 安装 Android SDK

先安装jdk RUN apt-get install default-jdk 参考:http://t.zoukankan.com/braveym-p-6143356.html mkdir -p $HOME/install/android-sdk wget https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip unzip commandlinetools-linu…...

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.4 鼠标按下、移动、释放事件

本章要实现的整体效果如下: QEvent::MouseButtonPress ​ 鼠标按下时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseMove ​ 鼠标移动时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseButtonRel…...

vue3父子通信+ref,toRef,toRefs使用实例

ref是什么? 生成值类型的响应式数据可用于模板和reactive通过.value修改值可以获取DOM元素 <p ref”elemRef”>{{nameRef}} -- {{state.name}}</p> // 获取dom元素 onMounted(()>{ console.log(elemRef.value); }); toRef是什么? 针对一个响应式对象(rea…...

输入电压转化为电流性 5~20mA方案

输入电压转化为电流性 5~20mA方案 方案一方案二方案三 方案一 XTR111是一款精密的电压-电流转换器是最广泛应用之一。原因有二&#xff1a;一是线性度非常好、二是价格便宜。总结成一点&#xff0c;就是性价比高。 典型电路 最终电路 Z1二极管处输出电流表达式&#xff1a;…...

SpringBoot自带模板引擎Thymeleaf使用详解①

目录 前言 一、SpringBoot静态资源相关目录 二、变量输出 2.1 在templates目录下创建视图index.html 2.2 创建对应的Controller 2.3 在视图展示model中的值 三、操作字符串和时间 3.1 操作字符串 3.2 操作时间 前言 Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎&am…...

推荐算法——Apriori算法原理

0、前言&#xff1a; 首先名字别读错&#xff1a;an pu ruo ao rui 【拼音发音】Apriori是一种推荐算法推荐系统&#xff1a;从海量数据中&#xff0c;帮助用户进行信息的过滤和选择。主要推荐方法有&#xff1a;基于内容的推荐、协同过滤推荐、基于关联规则的推荐、基于知识的…...

vue ant 隐藏 列

vue ant 隐藏 列 如果你使用的是Vue和Ant Design Vue组件库&#xff0c;你可以使用v-if指令来实现条件渲染来隐藏列。以下是一个示例代码&#xff1a; <template><a-table :columns"columns" :data-source"data"><template v-slot:custom…...

java基础之初始化顺序

初始化顺序 在类中变量定义的顺序决定了它们初始化的顺序。在创建任何java对象时&#xff0c;都是依次调用父类非静态初始化块、父类构造器执行初始化、本类的非静态初始化块、本类构造器执行初始化 public class House { // 构造器之前 Window w1 new Window(1); Ho…...

FFmpeg 命令:从入门到精通 | ffmpeg filter(过滤器 / 滤镜)

FFmpeg 命令&#xff1a;从入门到精通 | ffmpeg filter&#xff08;过滤器 / 滤镜&#xff09; FFmpeg 命令&#xff1a;从入门到精通 | ffmpeg filter&#xff08;过滤器 / 滤镜&#xff09;ffmpeg fliter 基本内置变量视频裁剪文字水印图片水印画中画视频多宫格处理 FFmpeg 命…...

【C语言】23-结构体类型

目录 1. 如何建立结构体类型2. 如何使用结构体2.1 定义结构体变量2.2 结构体变量的初始化和引用2.3 结构体数组2.4 结构体指针2.4.1 指向结构体变量的指针2.4.2 指向结构体数组的指针C 语言提供了一些由系统已定义好的数据类型,如: int、 float、 char 等,用户可以在程序…...

Python小技巧:快速合并字典dict()

文章目录 前言知识点字典合并1. dict.update()基础合并2. 字典推导式 update() 后话 前言 这里是Python小技巧的系列文章。这是第四篇&#xff0c;快速合并字典。 在Python的使用中&#xff0c;有时候需要将两个 dict(字典) 进行合并。 通常我们会借助 dict(字典) 的内置方法 …...

如何使用 React 和 Docusaurus 编写的一些自定义钩子(Hook)

import useRouteContext from @docusaurus/useRouteContext; import {DependencyList, useEffect, useRef, useState, useMemo } from react; import {dequal } from dequal; /* eslint-disable global-require */ // @ts-ignore/*** 用于深度检测依赖的useMemo钩子* @param fa…...

【初识Linux】Linux环境配置、Linux的基本指令 一

Linux基本指令一 一、学习前提(环境配置&#xff09;①安装Xshell和云服务器推荐②Xshell用途如下图③打开Xshell 二、 Linux基本指令①whoami和who指令②pwd、ls、ls -l三个指令ls指令扩充 ③cd指令前提了解有了上面的认识&#xff0c;我们就可以开始cd指令的学习了 ④tree指令…...

conda常用命令参数,指定版本,依赖库文件,创建虚拟环境,删除,激活,退出,内部安装包,pip通过代理安装包

以下是conda的常用命令和参数&#xff1a; 1. 创建虚拟环境&#xff1a; - 创建一个新的虚拟环境&#xff1a;conda create -n 环境名 pythonx.x - 使用指定的依赖文件创建虚拟环境&#xff1a;conda create -n 环境名 --file requirements.txt 2. 激活虚拟环境&#x…...

【锁的区别】C++线程库和POSIX线程库锁的区别

C线程库和POSIX线程库锁的区别 C线程库代码段的互斥&#xff1a;mutex、recursive_mutex、timed_mutex、recursive_timed_mutex互斥量mutex&#xff1a;直接进行lock()或者unlock()递归互斥锁recursive_mutex&#xff1a;可以多次加锁&#xff0c;意味着加几次锁就需要解几次锁…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...

用js实现常见排序算法

以下是几种常见排序算法的 JS实现&#xff0c;包括选择排序、冒泡排序、插入排序、快速排序和归并排序&#xff0c;以及每种算法的特点和复杂度分析 1. 选择排序&#xff08;Selection Sort&#xff09; 核心思想&#xff1a;每次从未排序部分选择最小元素&#xff0c;与未排…...

Excel 怎么让透视表以正常Excel表格形式显示

目录 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总...