企业网站的开发建设方案怎么写,巩义网站公司,安顺网站设计,国产wordpress主题Task02 大模型能力
目录
prompt技巧公式LangChain 什么是LangChain如何使用LangChain#xff1f;LangChain的模型LangChain 的主要特点示例
prompt技巧公式
prompt (角色) 任务 要求 提示
LangChain
什么是LangChain
LangChain是一个强大的框架#xff0c;旨在帮…Task02 大模型能力
目录
prompt技巧公式LangChain 什么是LangChain如何使用LangChainLangChain的模型LangChain 的主要特点示例
prompt技巧公式
prompt (角色) 任务 要求 提示
LangChain
什么是LangChain
LangChain是一个强大的框架旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互将多个组件链接在一起并集成额外的资源例如 API 和数据库。
官方文档https://python.langchain.com/en/latest/ 中文文档https://www.langchain.com.cn/
如何使用LangChain
要使用 LangChain开发人员首先要导入必要的组件和工具例如 LLMs, chat models, agents, chains, 内存功能。这些组件组合起来创建一个可以理解、处理和响应用户输入的应用程序。
LangChain 为特定用例提供了多种组件例如个人助理、文档问答、聊天机器人、查询表格数据、与 API 交互、提取、评估和汇总。
LangChain的模型
LangChain model 是一种抽象表示框架中使用的不同类型的模型。LangChain 中的模型主要分为三类
LLM大型语言模型这些模型将文本字符串作为输入并返回文本字符串作为输出。它们是许多语言模型应用程序的支柱。聊天模型( Chat Model)聊天模型由语言模型支持但具有更结构化的 API。他们将聊天消息列表作为输入并返回聊天消息。这使得管理对话历史记录和维护上下文变得容易。文本嵌入模型(Text Embedding Models)这些模型将文本作为输入并返回表示文本嵌入的浮点列表。这些嵌入可用于文档检索、聚类和相似性比较等任务。
LangChain 的主要特点
LangChain 旨在为六个主要领域的开发人员提供支持
LLM 和提示LangChain 使管理提示、优化它们以及为所有 LLM 创建通用界面变得容易。此外它还包括一些用于处理 LLM 的便捷实用程序。链(Chain)这些是对 LLM 或其他实用程序的调用序列。LangChain 为链提供标准接口与各种工具集成为流行应用提供端到端的链数据增强生成LangChain 使链能够与外部数据源交互以收集生成步骤的数据。例如它可以帮助总结长文本或使用特定数据源回答问题。AgentsAgents 让 LLM 做出有关行动的决定采取这些行动检查结果并继续前进直到工作完成。LangChain 提供了代理的标准接口多种代理可供选择以及端到端的代理示例。内存LangChain 有一个标准的内存接口有助于维护链或代理调用之间的状态。它还提供了一系列内存实现和使用内存的链或代理的示例。评估很难用传统指标评估生成模型。这就是为什么 LangChain 提供提示和链来帮助开发者自己使用 LLM 评估他们的模型。
示例 构建语言模型应用程序LLM from langchain.llms import OpenAI# 初始化包装器temperature越高结果越随机llm OpenAI(temperature0.9)# 进行调用text What would be a good company name for a company that makes colorful socks?print(llm(text))#生成结果结果是随机的 例如 Glee Socks. Rainbow Cozy SocksKaleidoscope Socks. Prompt Templates管理LLMs的Prompt 一般来说我们不会直接把输入给模型而是将输入和一些别的句子连在一起形成prompts之后给模型。 例如之前根据产品取名的用例在实际服务中我们可能只想输入socks那么What would be a good company name for a company that makes就是我们的template。 from langchain.prompts import PromptTemplate
prompt PromptTemplate(input_variables[product],templateWhat is a good name for a company that makes {product}?,
)
print(prompt.format(productcolorful socks))
# 输出结果 What is a good name for a company that makes colorful socks? 构建语言模型应用程序Chat Model 还可以使用聊天模型。这些是语言模型的变体它们在底层使用语言模型但具有不同的界面。聊天模型使用聊天消息作为输入和输出而不是“文本输入、文本输出”API。聊天模型 API 的使用还比较新所以大家都还在寻找最佳抽象使用方式。要完成聊天您需要将一条或多条消息传递给聊天模型。LangChain 目前支持 AIMessage、HumanMessage、SystemMessage 和 ChatMessage 类型。您将主要使用 HumanMessage、AIMessage 和 SystemMessage。 from langchain.chat_models import ChatOpenAI
from langchain.schema import (AIMessage,HumanMessage,SystemMessage
)chat ChatOpenAI(temperature0)
chat([HumanMessage(contentTranslate this sentence from English to French. I love programming.)])
#输出结果 AIMessage(contentJaime programmer., additional_kwargs{})信息抽取 根据输入的内容抽取关键信息 from langchain.prompts import PromptTemplate
from langchain.llms import OpenAIChat
from langchain.chains import LLMChain
import os
import openai
# #你申请的openai的api key
os.environ[OPENAI_API_KEY]
text北京市Beijing简称“京”古称燕京、北平是中华人民共和国首都、直辖市、国家中心城市、超大城市国务院批复确定的中国政治中心、文化中心、国际交往中心、科技创新中心 \中国历史文化名城和古都之一。 截至2020年北京市下辖16个区总面积16410.54平方千米。 2022年末北京市常住人口2184.3万人。 \
北京市地处中国北部、华北平原北部东与天津市毗连其余均与河北省相邻中心位于东经116°20′、北纬39°56′是世界著名古都和现代化国际城市 \也是中国共产党中央委员会、中华人民共和国中央人民政府和中华人民共和国全国人民代表大会常务委员会所在地。\
北京市地势西北高、东南低。西部、北部和东北部三面环山东南部是一片缓缓向渤海倾斜的平原。境内流经的主要河流有永定河、潮白河、北运河、拒马河等\
北京市的气候为暖温带半湿润半干旱季风气候夏季高温多雨冬季寒冷干燥春、秋短促。北京被世界城市研究机构GaWC评为世界一线城市 \
联合国报告指出北京市人类发展指数居中国城市第二位。 [4] 北京市成功举办夏奥会与冬奥会成为全世界第一个“双奥之城”。 \
2022年北京市实现地区生产总值41610.9亿元按不变价格计算比上年增长0.7%。其中第一产业增加值111.5亿元下降1.6%第二产业增加值6605.1亿元下降11.4%第三产业增加值34894.3亿元增长3.4%。#加载openai的llm
llm OpenAIChat(model_namegpt-3.5-turbo)
#创建模板
fact_extraction_prompt PromptTemplate(input_variables[text_input],template从下面的本文中提取关键事实。尽量使用文本中的统计数据来说明事实:\n\n {text_input}
)
#定义chain
fact_extraction_chain LLMChain(llmllm, promptfact_extraction_prompt)
facts fact_extraction_chain.run(text)
print(facts) 文本问答 import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import TokenTextSplitter
from langchain.llms import OpenAI
from langchain.chains import ChatVectorDBChain
from langchain.document_loaders import DirectoryLoader
import jieba as jb
import openai
files[xxx.txt,xxx.txt]
import time
start_time time.time()
for file in files:#读取data文件夹中的中文文档my_filef./data/{file}with open(my_file,r,encodingutf-8) as f: data f.read()#对中文文档进行分词处理cut_data .join([w for w in list(jb.cut(data))])#分词处理后的文档保存到data文件夹中的cut子文件夹中cut_filef./data/cut/cut_{file}with open(cut_file, w) as f: f.write(cut_data)f.close()
#加载文档
loader DirectoryLoader(./data/cut,glob**/*.txt)
docs loader.load()
#文档切块
text_splitter TokenTextSplitter(chunk_size1000, chunk_overlap0)
doc_texts text_splitter.split_documents(docs)
#调用openai Embeddings
aos.environ[OPENAI_API_KEY]
embeddings OpenAIEmbeddings(openai_api_keya)
#向量化
vectordb Chroma.from_documents(doc_texts, embeddings, persist_directory./data/cut)
vectordb.persist()
#创建聊天机器人对象chain
chain ChatVectorDBChain.from_llm(OpenAI(temperature0, model_namegpt-3.5-turbo), vectordb, return_source_documentsTrue)def get_answer(question):chat_history []result chain({question: question, chat_history: chat_history})return result[answer]
question xxxxxxxxxxx
print(get_answer(question))
end_time time.time() # 程序结束时间
run_time end_time - start_time # 程序的运行时间单位为秒
print(run_time) 。。。