LangChain 实战课:开篇词——奇点时刻

我正在参加「豆包MarsCode AI练中学体验活动」详情请看:掘金小册上线 AI练中学功能 | 你的 AI 编程助教喊你免费领小册啦!

引言

自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的提问

MarsCode 复制代码
我: 请详细告诉我LangChain是什么?
MarsCode AI: LangChain 是一个用于开发基于语言模型的应用程序的框架。它提供了一套工具和组件,帮助开发者构建与大型语言模型(如 GPT-3、GPT-4 等)交互的应用程序。LangChain 的目标是简化与语言模型的集成过程,使得开发者能够更轻松地利用这些模型的强大功能。

我们的主角对我的问题迅速做出了回答。他告诉我LangChain是一个框架 ,用于开发基于语言模型的应用程序。该回答和我在bing搜索引擎上搜索到的答案大致上相同。可见,我们的主角还是十分的强大的。

下面让我们正式开始学习LangChain实战课吧!!!

我们来到LangChain 实战课的开篇词_奇点时刻

开篇词_奇点时刻

这是开篇词_奇点时刻的链接地址。

案例一

01_SimpleTextGeneration.py - 简单文本生成

Python 复制代码
"""
本文件是【开篇词|带你亲证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 ChatOpenAI
llm = 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 - 图片描述

python 复制代码
"""
本文件是【开篇词|带你亲证AI应用开发的"奇点"时刻】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388071021892337700
您可以点击最上方的"运行"按钮,直接运行该文件;更多操作指引请参考Readme.md文件。
"""
# ---- Part 0 导入所需要的类
import os
import requests
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration
from langchain.tools import BaseTool
from langchain_openai import ChatOpenAI
from 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 caption

    def _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 请为这张图创作合适的中文推广文案")
相关推荐
Sword994 天前
LangChain 实战08 - OutputParser
前端·人工智能·豆包marscode
Sword997 天前
LangChain 实战06 - 六大核心组件之Prompt(下)
前端·人工智能·豆包marscode
Sword9910 天前
LangChain 实战04 - 六大核心组件之Model
人工智能·豆包marscode
稀土君12 天前
直播送礼啦!豆包MarsCode校园发布会即将上线!万元大奖,玩法多多先睹为快
前端·人工智能·豆包marscode
优秀稳妥的愛掘金愛蘿莉ikun1 个月前
每日一题-数字分组求偶数和
豆包marscode