鲜花海报文案生成器利用LangChain代理实现了图像到文案的自动化处理,主要有以下几个关键点和心得:
-
多工具集成化流程:通过LangChain的代理,调用了HuggingFace的图像字幕模型,将图片转化为文字描述。这种多模型集成的方式,体现了LangChain强大的工具链管理能力。
-
温度控制提升随机性:设置
temperature=0.2使得生成的文案既具备连贯性又不失变化性。每次调用的文案内容略有不同,增加了多样性,适合社交媒体上日常多次发布。 -
基于大语言模型的语义润色:OpenAI的大语言模型并不仅仅返回描述,而是对文案进行更有感情色彩的修饰。例如生成的“爱,让每一天充满美丽,让每一个心情都充满甜蜜”这类文案不仅符合图像内容,而且更具吸引力。
-
简单实用的代码流程:代码分为图像处理、工具定义、代理执行三部分,清晰简洁。这种流程分割便于扩展和修改,例如可以替换成不同的图像模型或文案风格,更好地服务不同类型的推广需求。
-
可扩展性与便捷性:LangChain代理使这个流程可以方便地复用和扩展,支持更多类型的图像描述生成,不仅限于鲜花推广。这种自动化方式也大大节省了人力,使文案生成更高效。
-
初始化图像字幕生成模型(HuggingFace中的image-caption模型)。 2. 定义LangChain图像字幕生成工具。 3. 初始化并运行LangChain Agent(代理),这个Agent是OpenAI的大语言模型,会自动进行分析,调用工具,完成任务。 不过,这段代码需要的包比较多。在运行这段代码之前,你需要先更新LangChain到最新版本,安装HuggingFace的Transformers库(开源大模型工具),并安装 Pillow(Python图像处理工具包)和 PyTorch(深度学习框架)。 2.**``` plain plain复制代码AI练中学pip install --upgrade langchain pip install transformers pip install pillow pip install torch torchvision torchaudio plain复制代码AI练中学#---- 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 = 'mir-s3-cdn-cf.behance.net/project_mod…' agent.invoke(input=f"{img_url}\n请创作合适的中文推广文案")