簡介
一夕輕雷落萬絲,霽光浮瓦碧參差。
緊接之前LangChain專題文章:
- 15:如何用LangChain做長文檔問答?
- 16:如何基于LangChain打造聯(lián)網(wǎng)版ChatGPT?
- 17:ChatGPT應用框架LangChain速成大法
今天這篇小作文是LangChain實踐專題的第4篇,主要介紹如何用LangChain進行網(wǎng)頁問答。前文介紹用LangChain做文檔問答,需要先將網(wǎng)頁另存為pdf或者其他文檔格式,再讀取文件做問答。今天這篇小作文介紹如何直接做網(wǎng)頁問答,本質(zhì)上是將前文的數(shù)據(jù)本地存儲改為數(shù)據(jù)在線爬取。
網(wǎng)頁爬取
這里使用LLMRequestsChain
從 URL 獲取 HTML 結(jié)果,然后使用 LLM 解析結(jié)果。以下以羅大佑百科網(wǎng)頁為例,說明如何用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 = """在 >>> 和 <<< 之間是網(wǎng)頁的返回的HTML內(nèi)容。
請抽取表格中的信息。
>>> {requests_result} <<<
請使用JSON格式返回你抽取的結(jié)果。
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'])
輸出結(jié)果如下:
{
"姓名": "羅大佑",
"性別": "男",
"民族": "漢族",
"國籍": "中國",
"出生地": "臺灣省臺北市",
"出生日期": "1954年7月20日",
"畢業(yè)院校": "臺灣中山醫(yī)學院",
"星座": "巨蟹座",
"血型": "O型",
"身高": "172 cm",
"經(jīng)紀公司": "種子音樂",
"擅長樂器": "吉他、鋼琴",
"代表作品": "東方之珠、明天會更好、鹿港小鎮(zhèn)、光陰的故事、童年、戀曲1990、之乎者也、你的樣子、亞細亞的孤兒、戀曲1980、愛人同志、閃亮的日子、愛的箴言、未來的主人翁、沉默的表示、穿過你的黑發(fā)的我的手、野百合也有春天",
"主要成就": "臺灣金曲獎特別貢獻獎、hito流行音樂獎頒獎典禮樂壇成就大獎、中國金唱片獎藝術成就獎、音樂風云榜歌壇杰出貢獻獎、亞洲最杰出藝人獎"
}
示例2: 指定字段抽取信息
template = """在 >>> 和 <<< 之間是網(wǎng)頁的返回的HTML內(nèi)容。
請抽取表格中的信息。
>>> {requests_result} <<<
請使用如下JSON格式返回你抽取的結(jié)果。
{{"中文名": "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'])
輸出結(jié)果如下:
{"中文名": "羅大佑", "代表作品": "東方之珠、明天會更好、鹿港小鎮(zhèn)、光陰的故事、童年、戀曲1990、之乎者也、你的樣子、亞細亞的孤兒、戀曲1980、愛人同志、閃亮的日子、愛的箴言、未來的主人翁、沉默的表示、穿過你的黑發(fā)的我的手、野百合也有春天", "祖籍": "廣東省梅州市梅縣區(qū)", "妻子": "李烈、Elaine"}
查閱原文:
網(wǎng)頁問答
示例1: 數(shù)據(jù)統(tǒng)計
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 = """在 >>> 和 <<< 之間是網(wǎng)頁的返回的HTML內(nèi)容。
>>> {requests_result} <<<
根據(jù)網(wǎng)頁內(nèi)容,回答問題:{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'])
輸出結(jié)果如下:
根據(jù)網(wǎng)頁內(nèi)容,羅大佑有兩個老婆。他與李烈結(jié)婚后僅維持了一年半的婚姻,然后在2010年與Elaine結(jié)婚。
示例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 = """在 >>> 和 <<< 之間是網(wǎng)頁的返回的HTML內(nèi)容。
>>> {requests_result} <<<
根據(jù)網(wǎng)頁內(nèi)容,回答問題:{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'])
輸出結(jié)果如下:文章來源:http://www.zghlxwxcb.cn/news/detail-611520.html
根據(jù)網(wǎng)頁內(nèi)容,羅大佑最近獲得的獎是第32屆臺灣金曲獎特別貢獻獎。
文章來源地址http://www.zghlxwxcb.cn/news/detail-611520.html
到了這里,關于LLM系列 | 18 : 如何用LangChain進行網(wǎng)頁問答的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!