LLM系列 | 18 : 如何用LangChain进行网页问答

news2024/10/7 18:26:00

简介

一夕轻雷落万丝,霁光浮瓦碧参差。
在这里插入图片描述

紧接之前LangChain专题文章:

  • 15:如何用LangChain做长文档问答?
  • 16:如何基于LangChain打造联网版ChatGPT?
  • 17:ChatGPT应用框架LangChain速成大法

今天这篇小作文是LangChain实践专题的第4篇,主要介绍如何用LangChain进行网页问答。前文介绍用LangChain做文档问答,需要先将网页另存为pdf或者其他文档格式,再读取文件做问答。今天这篇小作文介绍如何直接做网页问答,本质上是将前文的数据本地存储改为数据在线爬取

网页爬取

这里使用LLMRequestsChain从 URL 获取 HTML 结果,然后使用 LLM 解析结果。以下以罗大佑百科网页为例,说明如何用LangChain进行web QA。

示例1: 信息抽取

import os
os.environ['OPENAI_API_KEY'] ="sk-XXXX"

import warnings
warnings.filterwarnings("ignore")
# model_name = "gpt-3.5-turbo"
model_name = "gpt-3.5-turbo-16k"
task_url = "https://baike.baidu.com/item/%E7%BD%97%E5%A4%A7%E4%BD%91/236869"
llm = OpenAI(model_name=model_name, temperature=0)

template = """在 >>> 和 <<< 之间是网页的返回的HTML内容。
请抽取表格中的信息。

>>> {requests_result} <<<
请使用JSON格式返回你抽取的结果。
Extracted:"""

prompt = PromptTemplate(
    input_variables=["requests_result"],
    template=template
)

chain = LLMRequestsChain(llm_chain=LLMChain(llm=llm, prompt=prompt))
inputs = {
  "url": task_url
}

response = chain(inputs)
print(response['output'])

输出结果如下:

{
  "姓名": "罗大佑",
  "性别": "男",
  "民族": "汉族",
  "国籍": "中国",
  "出生地": "台湾省台北市",
  "出生日期": "1954年7月20日",
  "毕业院校": "台湾中山医学院",
  "星座": "巨蟹座",
  "血型": "O型",
  "身高": "172 cm",
  "经纪公司": "种子音乐",
  "擅长乐器": "吉他、钢琴",
  "代表作品": "东方之珠、明天会更好、鹿港小镇、光阴的故事、童年、恋曲1990、之乎者也、你的样子、亚细亚的孤儿、恋曲1980、爱人同志、闪亮的日子、爱的箴言、未来的主人翁、沉默的表示、穿过你的黑发的我的手、野百合也有春天",
  "主要成就": "台湾金曲奖特别贡献奖、hito流行音乐奖颁奖典礼乐坛成就大奖、中国金唱片奖艺术成就奖、音乐风云榜歌坛杰出贡献奖、亚洲最杰出艺人奖"
}

示例2: 指定字段抽取信息

template = """在 >>> 和 <<< 之间是网页的返回的HTML内容。
请抽取表格中的信息。

>>> {requests_result} <<<
请使用如下JSON格式返回你抽取的结果。
{{"中文名": "a", "代表作品": "b", "祖籍": "c", "妻子": "d"}}

Extracted:"""

prompt = PromptTemplate(
    input_variables=["requests_result"],
    template=template
)

chain = LLMRequestsChain(llm_chain=LLMChain(llm=llm, prompt=prompt))
inputs = {
  "url": task_url
}

response = chain(inputs)
print(response['output'])

输出结果如下:

{"中文名": "罗大佑", "代表作品": "东方之珠、明天会更好、鹿港小镇、光阴的故事、童年、恋曲1990、之乎者也、你的样子、亚细亚的孤儿、恋曲1980、爱人同志、闪亮的日子、爱的箴言、未来的主人翁、沉默的表示、穿过你的黑发的我的手、野百合也有春天", "祖籍": "广东省梅州市梅县区", "妻子": "李烈、Elaine"}

查阅原文:

在这里插入图片描述

网页问答

示例1: 数据统计

from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.chains import LLMRequestsChain, LLMChain
import os

os.environ['OPENAI_API_KEY'] ="sk-XXXX"
os.environ['HTTP_PROXY'] = "XXX"
os.environ['HTTPS_PROXY'] = "XXX"

import warnings
warnings.filterwarnings("ignore")
# model_name = "gpt-3.5-turbo"
model_name = "gpt-3.5-turbo-16k"
task_url = "https://baike.baidu.com/item/%E7%BD%97%E5%A4%A7%E4%BD%91/236869"
llm = OpenAI(model_name=model_name, temperature=0)

template = """在 >>> 和 <<< 之间是网页的返回的HTML内容。

>>> {requests_result} <<<

根据网页内容,回答问题:{query}。"""

prompt = PromptTemplate(
    input_variables=["requests_result", "query"],
    template=template
)

chain = LLMRequestsChain(llm_chain=LLMChain(llm=llm, prompt=prompt))
inputs = {
  "url": task_url,
  "query":"罗大佑有几个老婆",
}

response = chain(inputs)
print(response['output'])

输出结果如下:

根据网页内容,罗大佑有两个老婆。他与李烈结婚后仅维持了一年半的婚姻,然后在2010年与Elaine结婚。

示例2: 时间类

# model_name = "gpt-3.5-turbo"
model_name = "gpt-3.5-turbo-16k"
task_url = "https://baike.baidu.com/item/%E7%BD%97%E5%A4%A7%E4%BD%91/236869"
llm = OpenAI(model_name=model_name, temperature=0)

template = """在 >>> 和 <<< 之间是网页的返回的HTML内容。

>>> {requests_result} <<<

根据网页内容,回答问题:{query}。"""

prompt = PromptTemplate(
    input_variables=["requests_result", "query"],
    template=template
)

chain = LLMRequestsChain(llm_chain=LLMChain(llm=llm, prompt=prompt))
inputs = {
  "url": task_url,
  "query":"罗大佑最近获得的奖是什么?",
}

response = chain(inputs)
print(response['output'])

输出结果如下:

根据网页内容,罗大佑最近获得的奖是第32届台湾金曲奖特别贡献奖。

在这里插入图片描述

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

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

相关文章

关于element ui 安装失败的问题解决方法并查看是否安装成功

报错信息&#xff1a; 解决办法&#xff1a; 使用命令&#xff1a; npm install --legacy-peer-deps element-ui --save 查看是否安装成功&#xff1a; 方法一&#xff1a;在package.json文件中查看是否有element-ui版本 方法二&#xff1a;查看node_modules目录下是否有elem…

宝塔设置云服务器mysql端口转发,实现本地电脑访问云mysql

环境&#xff1a;centos系统使用宝塔面板 实现功能&#xff1a;宝塔设置云服务器mysql端口转发&#xff0c;实现本地电脑访问mysql 1.安装mysql、PHP-7.4.33、phpMyAdmin 5.0 软件商店》搜索 mysql安装即可 软件商店》搜索 PHP安装7.4.33即可&#xff08;只需要勾选快速安装&…

Vue 3:玩一下web前端技术(一)

前言 本章内容为VUE前端环境搭建与相关前端技术讨论。 下一篇文章地址&#xff1a; &#xff08;暂无&#xff09; 一、环境搭建 1. 安装Node.js Vue是基于Node.js的&#xff0c;因此首先需要安装Node.js。官网地址&#xff1a;Node.js 2. 安装Vue CLI Vue CLI是一个用…

简要介绍 | 自编码器:神经网络中的自我复制艺术

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对自编码器进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 自编码器&#xff1a;神经网络中的自我复制艺术 Autoencoders Explained - MATLAB & Simulink 一、背景介绍 自编码器&#xff0…

Megatron-LM、NVIDIA NeMo、MegaMolBART 、model_optim_rng.pt 文件是什么?

本文涉及以下几个概念&#xff0c;分别是&#xff1a; Megatron和Megatron-LM-v1.1.5-3D_parallelism NVIDIA NeMo Megatron和Megatron-LM-v1.1.5-3D_parallelism是什么&#xff1f; Megatron是由NVIDIA开发的一种用于训练大规模语言模型的开源框架。它旨在提供高效的分布式…

【C++】堆和栈的区别以及delete和delete[]的区别

文章目录 1、堆和栈2、delete和delete[]的区别 1、堆和栈 堆&#xff08;Heap&#xff09;和栈&#xff08;Stack&#xff09;是计算机中用于管理内存的两个重要概念。栈Stack&#xff1a;栈是只允许在一端进行插入和删除操作的线性表&#xff0c;允许插入和删除的一端称为栈顶…

Flink回撤流

1.回撤流定义&#xff08;RetractStream&#xff09; Flink 的回撤流是指在 Flink 的流处理算法中&#xff0c;撤回已经发送到下游节点的数据。这是因为在实际应用场景中&#xff0c;有些错误数据可能会发送到下游节点&#xff0c;因此需要回撤流以保证数据的准确性。 回撤流…

腾讯会议连接蓝牙耳机没有声音 - 解决方案

手机端 手机端连接蓝牙耳机没有声音 打开腾讯会议的附近设备权限。 电脑端 电脑端连接蓝牙耳机没有声音 问题原因 腾讯会议会自动连接使用蓝牙耳机的麦克风&#xff0c;导致耳机为了同时保证输出输入带宽进入了通讯模式&#xff08;hands-free&#xff09;&#xff0c;而腾…

Unity《勇士传说》开发日记:如何制作可互动标识

要实现的需求&#xff1a; 在游戏当中&#xff0c;我们的主角走到宝箱前&#xff0c;可以将宝箱打开&#xff0c;走到洞穴口可以进入下一个场景&#xff0c;此时需要有个互动标识来提示用户。如图所示&#xff1a; 当角色走到宝箱前&#xff0c;弹出互动标识提示用户按下E键可…

机器学习深度学习——感知机

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归的简洁实现 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们…

用C语言构建一个手写数字识别神经网络

(原理和程序基本框架请参见前一篇 "用C语言构建了一个简单的神经网路") &#xff11;&#xff0e;准备训练和测试数据集 从http://yann.lecun.com/exdb/mnist/下载手写数字训练数据集, 包括图像数据train-images-idx3-ubyte.gz 和标签数据 train-labels-idx1-ubyte.…

【语音识别】- 声学,词汇和语言模型

一、说明 语音识别是指计算机通过处理人类语言的音频信号&#xff0c;将其转换为可理解的文本形式的技术。也就是说&#xff0c;它可以将人类的口语语音转换为文本&#xff0c;以便计算机能够进一步处理和理解。它是自然语言处理技术的一部分&#xff0c;被广泛应用于语音识别助…

代码随想录训练营day2

问题一&#xff1a;长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 输入…

STM32 CAN控制的相关结构体

目录 CAN结构体 CAN初始化结构体 CAN发送及接收结构体 CAN筛选器结构体 CAN结构体 从STM32的CAN外设我们了解到它的功能非常多&#xff0c;控制涉及的寄存器也非常丰富&#xff0c;而使用STM32标准库提供的各种结构体及库函数可以简化这些控制过程。跟其它外设一样&#xf…

Mac配置android studio的终端terminal

一共6步 首先打开terminal 1.echo $HOME 2.touch .bash_profile 3.open -e .bash_profile 4.在弹出框中输入 export PATH${PATH}:你电脑sdk的路径/tools:你电脑sdk的路径/platform-tools 5.source .bash_profile 6.adb version 出现类似上图即为成功

将标签中某一个类别添加到另一个标签中

现在有两张CItyscapes数据集的标签&#xff0c;假设我想把第二张图骑车的人添加到第一张图&#xff0c;暂且不考虑添加位置的变换&#xff0c;那么该如何操作呢&#xff1f; 1&#xff1a;将骑车的人和车作为两个类别独立于其他的类别出来。 2&#xff1a;将这两个类别作为一个…

【LeetCode-简单】剑指 Offer 24. 反转链表(详解)

题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 方法&#xff1a;迭代 思路 定义三个指针&#xff0c;一起往后走&#xff0c;走一步就修改mid指针的next&#xff0c;原本是mid的next 是right&#xff0c;我们修改成l…

ERROR in unable to locate ‘***/public/**/*‘ glob

前提 自己搭了一个react项目的脚手架&#xff0c;npm包下载一切都很正常&#xff0c;启动的时候突然就报ERROR in unable to locate ***/public/**/* glob这个错误&#xff0c;根据百度分析了一下产生的原因&#xff1a;webpack配置文件中的CopyWebpackPlugin导致的 网上给出的…

用Rust生成Ant-Design Table Columns | 京东云技术团队

经常开发表格&#xff0c;是不是已经被手写Ant-Design Table的Columns整烦了&#xff1f; 尤其是ToB项目&#xff0c;表格经常动不动就几十列。每次照着后端给的接口文档一个个配置&#xff0c;太头疼了&#xff0c;主要是有时还会粘错就尴尬了。 那有没有办法能自动生成colu…

Windows下安装python3教程

参考:https://blog.csdn.net/kailingr/article/details/128193083 一、安装步骤图解 准备工作&#xff1a; 进官网https://www.python.org/下载Python 安装包&#xff0c;注意&#xff1a;Python 3.9不能在Windows 7或更早版本上使用 安装&#xff1a; 1.下载完之后双击该文…