赞
踩
LangChain是一个新一代的AI开发框架,旨在释放大语言模型的潜能,为开发者提供便捷的开发工具和接口。
深入 6 大组件LangChain 中的具体组件包括:
LLM交互
文档问答
基于Langchain思想实现基于本地知识库的问答应用。实现过程如下:
1、加载文件
2、读取文本
3、文本分割
4、文本向量化
5、问句向量化
6、在文本向量中匹配出与问句向量最相似的top k个
7、匹配出的文本作为上下文和问题一起添加到prompt中
8、提交给LLM生成回答。
还有另一个版本(本质是一样的)
import os
os.environ["OPENAI_API_KEY"] = '你的OpenAI Key'
from langchain_openai import OpenAI
llm = OpenAI(model_name="gpt-3.5-turbo-instruct",max_tokens=200)
text = llm.invoke("请给我写一句情人节红玫瑰的中文宣传语")
print(text)
pip install --upgrade langchain pip install transformers pip install pillow pip install torch torchvision torchaudio #---- Part 0 导入所需要的类 import os import requests from PIL import Image from transformers import BlipProcessor, BlipForConditionalGeneration from langchain.tools import BaseTool from langchain import OpenAI from langchain.agents import initialize_agent, AgentType #---- Part I 初始化图像字幕生成模型 # 指定要使用的工具模型(HuggingFace中的image-caption模型) hf_model = "Salesforce/blip-image-captioning-large" # 初始化处理器和工具模型 # 预处理器将准备图像供模型使用 processor = BlipProcessor.from_pretrained(hf_model) # 然后我们初始化工具模型本身 model = BlipForConditionalGeneration.from_pretrained(hf_model) #---- Part II 定义图像字幕生成工具类 class ImageCapTool(BaseTool): name = "Image captioner" description = "为图片创作说明文案." def _run(self, url: str): # 下载图像并将其转换为PIL对象 image = Image.open(requests.get(url, stream=True).raw).convert('RGB') # 预处理图像 inputs = processor(image, return_tensors="pt") # 生成字幕 out = model.generate(**inputs, max_new_tokens=20) # 获取字幕 caption = processor.decode(out[0], skip_special_tokens=True) return caption def _arun(self, query: str): raise NotImplementedError("This tool does not support async") #---- PartIII 初始化并运行LangChain智能代理 # 设置OpenAI的API密钥并初始化大语言模型(OpenAI的Text模型) os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key' llm = OpenAI(temperature=0.2) # 使用工具初始化智能代理并运行它 tools = [ImageCapTool()] agent = initialize_agent( agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, tools=tools, llm=llm, verbose=True, ) img_url = 'https://mir-s3-cdn-cf.behance.net/project_modules/hd/eec79e20058499.563190744f903.jpg' agent.invoke(input=f"{img_url}\n请创作合适的中文推广文案")
from langchain.document_loaders import UnstructuredFileLoader from langchain.chains.summarize import load_summarize_chain from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain import OpenAI # 导入文本 loader = UnstructuredFileLoader("/content/sample_data/data/lg_test.txt") # 将文本转成 Document 对象 document = loader.load() print(f'documents:{len(document)}') # 初始化文本分割器 text_splitter = RecursiveCharacterTextSplitter( chunk_size = 500, chunk_overlap = 0 ) # 切分文本 split_documents = text_splitter.split_documents(document) print(f'documents:{len(split_documents)}') # 加载 llm 模型 llm = OpenAI(model_name="text-davinci-003", max_tokens=1500) # 创建总结链 chain = load_summarize_chain(llm, chain_type="refine", verbose=True) # 执行总结链,(为了快速演示,只总结前5段) chain.run(split_documents[:5])
学习的参考资料:
极客时间:LangChain 实战课
Langchain-ChatGLM:基于本地知识库问答
LangChain 中文入门教程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。