LangChain 实战课:开篇词——奇点时刻
大模型开发/技术交流
- LLM
2024.12.02373看过
引言
自OpenAI公司发布的ChatGPT爆火以后,人工智能(AI, Artifical Intelligence)如洪水般的涌入我们的日常生活。像常见的大语言模型(LLM, Large Langugue Model):文心一言、星火大模型、豆包、书生、通义千问。以及代码助手MarsCode AI(此次学习的主角)、Copolit、ChatGPT、通义灵码、CodeGeex等工具不断涌现,我们程序员的工作方式变得多种多样。作为一名程序员,我也想紧跟AI时代的热潮,来感受AI对我们程序员究竟有多大的影响。
正因如此,该文章诞生了。
ChatGPT是OpenAI基于GPT-3.5系列语音模型微调而成的对话式AI模型,于2022年11月30日正式发布 。
正文
首先,让我们来感受一下我们主角(MarsCode AI)的魅力吧。
下面是我对MarsCode AI的提问
我: 请详细告诉我LangChain是什么?MarsCode AI: LangChain 是一个用于开发基于语言模型的应用程序的框架。它提供了一套工具和组件,帮助开发者构建与大型语言模型(如 GPT-3、GPT-4 等)交互的应用程序。LangChain 的目标是简化与语言模型的集成过程,使得开发者能够更轻松地利用这些模型的强大功能。
我们的主角对我的问题迅速做出了回答。他告诉我LangChain是一个框架,用于开发基于语言模型的应用程序。该回答和我在bing搜索引擎上搜索到的答案大致上相同。可见,我们的主角还是十分的强大的。
下面让我们正式开始学习LangChain实战课吧!!!
我们来到LangChain 实战课的开篇词_奇点时刻。
开篇词_奇点时刻
这是开篇词_奇点时刻的链接地址。
案例一
01_SimpleTextGeneration.py - 简单文本生成
"""本文件是【开篇词|带你亲证AI应用开发的“奇点”时刻】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388071021892337700您可以点击最上方的“运行“按钮,直接运行该文件;更多操作指引请参考Readme.md文件。"""import os# llm = OpenAI(model_name="gpt-3.5-turbo-instruct",max_tokens=200)# 导入Azure OpenAI的LLM模型from langchain_openai import ChatOpenAIllm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))# text = llm.predict("请给我写一句情人节红玫瑰的中文宣传语")# print(text)text_one = llm.predict("请给我一句学习langchain的中文宣传语")print(text_one)
下面我们对上述代码做一个解释。
-
from langchain_openai import ChatOpenAI
导入了langchain_openai
模块中的ChatOpenAI
类,这是一个用于与OpenAI的Chat模型进行交互的类. -
llm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))
是初始化了一个Chat模型,这行代码尝试从环境变量中获取LLM_MODELEND
的值,并将其作为模型名称初始化ChatOpenAI
实例对象。如果环境变量中没有提供模型名称,则会使用默认值(如果ChatOpenAI类中有指定的值)。 -
text_one = llm.predict("请给我一句学习langchain的中文宣传语")
这行代码使用llm
实例的predict
方法生成文本。传入的字符串是一个提示,要求模型生成一句关于学习langchain的中文宣传语。 -
最后是打印
print(text_one)
。
下面是模型输出情况。
案例二
01_PictureDescription.py - 图片描述
"""本文件是【开篇词|带你亲证AI应用开发的“奇点”时刻】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388071021892337700您可以点击最上方的“运行“按钮,直接运行该文件;更多操作指引请参考Readme.md文件。"""# ---- Part 0 导入所需要的类import osimport requestsfrom PIL import Imagefrom transformers import BlipProcessor, BlipForConditionalGenerationfrom langchain.tools import BaseToolfrom langchain_openai import ChatOpenAIfrom langchain.agents import initialize_agent, AgentType# ---- Part I 初始化图像字幕生成模型# 指定要使用的工具模型(HuggingFace中的image-caption模型)hf_model = "Salesforce/blip-image-captioning-large"print("正在初始化图像字幕生成模型...")# 初始化处理器和工具模型# 预处理器将准备图像供模型使用processor = BlipProcessor.from_pretrained(hf_model)# 然后我们初始化工具模型本身model = BlipForConditionalGeneration.from_pretrained(hf_model)print("初始化图像字幕生成模型成功")# ---- Part II 定义图像字幕生成工具类class ImageCapTool(BaseTool):name = "Image captioner"description = "使用该工具可以生成图片的文字描述,需要传入图片的URL."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 captiondef _arun(self, query: str):raise NotImplementedError("This tool does not support async")# ---- PartIII 初始化并运行LangChain智能体# llm = OpenAI(temperature=0.2)llm = ChatOpenAI(model=os.environ.get("LLM_MODEL_4K_FUNCTION_CALL"),temperature=0,)print("初始化大语言模型成功")# 使用工具初始化智能体并运行tools = [ImageCapTool()]agent = initialize_agent(agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,tools=tools,llm=llm,verbose=True,handle_parsing_errors=True,)img_url = "https://lf3-static.bytednsdoc.com/obj/eden-cn/lkpkbvsj/ljhwZthlaukjlkulzlp/eec79e20058499.563190744f903.jpg"# agent.run(input=f"{img_url}\n请创作合适的中文推广文案")agent.invoke(input=f"图片链接如下:{img_url}\n 请为这张图创作合适的中文推广文案")
————————————————
版权声明:本文为稀土掘金博主「鼠鼠有出息」的原创文章
原文链接:https://juejin.cn/post/7431459937866285091
如有侵权,请联系千帆社区进行删除
评论