青训营AI方向:开篇词-带你亲证AI应用开发的“奇点”时刻 | 豆包MarsCode AI刷题

96 阅读4分钟

现代AI的核心驱动力神经网络,70年间两落三起;自然语言处理技术亦不例外,在ChatGPT和GPT-4出现之前,NLP技术也曾受过质疑,长期经历低谷期。

面向AI时代,所有产品都值得用大模型重新升级。

LangChain:

作为一种专为开发基于语言模型的应用而设计的框架,通过LangChain,我们不仅可以通过API调用如 ChatGPT、GPT-4、Llama 2 等大型语言模型,还可以实现更高级的功能。

两个特性:1.数据感知:能将语言模型与其他数据源连接起来 2.具有代理性:能够让语言模型与其环境进行交互

LangChain是一个框架,用于构建基于大语言模型的应用程序,使开发者能够轻松实现如文本转图像、文档问答和聊天机器人等复杂任务。它提供多种工具和接口,简化了使用语言模型开发应用程序的过程。

LangChain的6大组件:模型Models、提示模板Prompts、数据检索Indexes、记忆Memory、链Chains、代理Agents

  • 模型(Models) :包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。
  • 提示模板(Prompts) :组织输入给AI的问题或指令,从而让它能更好地理解和回应。
  • 数据检索(Indexes) :创建并管理文档库,用户可以通过搜索快速找到最相关的信息。
  • 记忆(Memory) :就像给人类的记忆一样,这个功能让聊天机器人能够在对话中记住一些信息,包括短期记得的东西和长期存储的知识,这样它可以记得之前跟你聊过什么。
  • 链(Chains) :LangChain一个重要的部分,把不同的小工具串联起来,按照一定的顺序自动执行任务,使得完成复杂工作变得既简单又灵活。--> 工作流
  • 代理(Agents) :LangChain的一个关键特性,它允许大的AI模型自己决定什么时候需要使用哪些外部服务或者内部功能。

应用1: 情人节玫瑰宣传语

import os
from langchain_openai import ChatOpenAI

# llm = OpenAI(model_name="gpt-3.5-turbo-instruct",max_tokens=200)
llm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))

text = llm.predict("请给我写一句情人节红玫瑰的中文宣传语")
print(text)

应用2:海报文案生成器

#---- 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请创作合适的中文推广文案")

小结:

  • 现代 AI 发展历程,其核心驱动力神经网络以及自然语言处理技术历经起伏,如今面向 AI 时代,产品可用大模型重新升级。
  • LangChain 框架:它专为开发基于语言模型的应用而设,具备数据感知、代理性等特性,能简化开发流程以完成多种复杂任务。包含的模型、提示、模板、数据检索、记忆、链、代理 6 大组件。
  • LangChain 两个应用示例,一是生成情人节玫瑰宣传语,通过导入相关库调用 ChatOpenAI 模型实现;二是海报文案生成器,需经过导入类、初始化图像字幕生成模型、定义工具类、设置 API 密钥并初始化大语言模型以及运行智能代理等步骤来为指定图片创作中文推广文案。