直通车关键词优化口诀电商网站seo怎么做
你已经制作好了一批鲜花的推广海报,想为每一个海报的内容,写一两句话,然后 post 到社交平台上,以期图文并茂。
下载 Salesforce/blip-image-captioning-large 图生文模型
通过以下几个命令下载该模型
pip install -U huggingface_hubexport HF_ENDPOINT=https://hf-mirror.comhuggingface-cli download Salesforce/blip-image-captioning-large
安装依赖包
- Transformers 库——开源大模型工具
- Pillow——Python 图像处理工具包
- PyTorch——深度学习框架
pip install transformers
pip install pillow
pip install torch torchvision torchaudio
初始化
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAIload_dotenv()
ai_model = os.getenv("OPENAI_MODEL")# ---- Part 0 导入所需要的类
import requests
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration
from langchain import PromptTemplate
from langchain.tools import BaseTool
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:str = "Image captioner"description:str = "为图片创作说明文案."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)print(caption)return captiondef _arun(self, query: str):raise NotImplementedError("This tool does not support async")
创建LangChain的agent
llm = ChatOpenAI(model=ai_model, temperature=0.2)# 使用工具初始化智能代理并运行它
tools = [ImageCapTool()]
agent = initialize_agent(agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,tools=tools,llm=llm,verbose=True,
)
通过agent生成图片对应的宣传文案
img_url = 'https://mir-s3-cdn-cf.behance.net/project_modules/hd/eec79e20058499.563190744f903.jpg'
question = f"{img_url}\n请创作合适的中文推广文案"
prompt = PromptTemplate.from_template(question)
result = agent.run(prompt)
print(result)
运行效果如下: