当前位置: 首页 > news >正文

15. LangChain实战项目2——易速鲜花海报文案生成

你已经制作好了一批鲜花的推广海报,想为每一个海报的内容,写一两句话,然后 post 到社交平台上,以期图文并茂。

下载 Salesforce/blip-image-captioning-large 图生文模型

通过以下几个命令下载该模型

pip install -U huggingface_hub

export HF_ENDPOINT=https://hf-mirror.com

huggingface-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 ChatOpenAI

load_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 caption

    def _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)

 运行效果如下:

相关文章:

  • 关于大型语言模型的结构修剪
  • WSBDF レクチア 定义2 引理3 wsbdf的乘子
  • 两路导播台mov素材硬盘格式化后的恢复方法
  • 【C++/数据结构】队列
  • java2025springboot面试题第一弹
  • WhiteNoise的用法
  • flutter 网络请求封装与json序列化与反序列化
  • FPGA开发,使用Deepseek V3还是R1(5):temperature设置
  • C++(四)类与对象 下
  • 特辣的海藻!7
  • 深入浅出理解编译器:前端视角
  • 477. 汉明距离总和
  • 基于RKNN的嵌入式深度学习开发(2)
  • 计算机网络---TCP三握四挥
  • 基于Ollama安装deepseek-r1模型搭建本地知识库(Dify、MaxKb、Open-WebUi、AnythingLLM、RAGFlow、FastGPT)
  • 钉钉小程序(企业内部应用)开发--钉钉小程序web-view嵌套H5与小程序之间的通信(H5跳转钉钉小程序小程序postMessage)
  • 计算机毕业设计SpringBoot+Vue.js保险合同管理系统(源码+文档+PPT+讲解)
  • 相机引导2_两个固定相机引导机器人把芯片装入外壳
  • 【清晰、易操作、好用】Latex简历模板-个人求职升学版
  • java常见面试01
  • 基于html5的旅游网站的设计/网站模板之家
  • wap网站案例/怎么做网站优化排名
  • 域名收录提交入口/长沙整站优化
  • 十堰微网站建设/seo外链是什么
  • 闸北做网站/优化软件seo排名
  • 专业营销的网站建设公司排名/太原seo哪家好