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)

 运行效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980282.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

支持IPD项目管理的9大系统,哪款工具能有效提高项目控制能力

本文介绍了以下9大系统: 1.Worktile; 2. 腾讯敏捷开发平台(TAPD); 3. 简道云(Jiandaoyun); 4. 蓝鲸智云(BlueWhale); 5. 轻流(Qingflow&#xff0…

创建一个MCP服务器,并在Cline中使用,增强自定义功能。

MCP介绍 MCP 是一个开放协议,它标准化了应用程序如何向LLMs提供上下文。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种标准化的方法来将您的设备连接到各种外围设备和配件一样,MCP 提供了一种标准化的方法来将 AI 模型连接到不同的…

Linux之yum详解

—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中,软件管理方式通常有三种方式: rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…

2025国家护网HVV高频面试题总结来了01(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4 高频面试题第四套 0x5 高频面…

leetcode 59. 螺旋矩阵 II 中等

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入:n 1 输出&am…

基于Rook的Ceph云原生存储部署与实践指南(下)

#作者:任少近 文章目录 6Ceph资源对像管理6.1查看services6.2查看Jobs6.3 查看deployments.apps6.4查看daemonsets.apps6.5查看configmaps6.6查看clusterroles.rbac.authorization.k8s.io6.7查看clusterrolebindings.rbac.authorization.k8s.io6.8通过cephclusters…

深入浅出 Go 语言:协程(Goroutine)详解

深入浅出 Go 语言:协程(Goroutine)详解 引言 Go 语言的协程(goroutine)是其并发模型的核心特性之一。协程允许你轻松地编写并发代码,而不需要复杂的线程管理和锁机制。通过协程,你可以同时执行多个任务,并…

常用的api测试软件

我们在写完后端API接口的时候,前端工程师可能还没有写完前端的页面,这时候后端工程师需要测试接口,因此后端开发通常需要api测试软件来测试接口,同时通过测试软件把定义好的接口格式分享文档。 这里推荐两款api测试软件软件&…

深入理解并实现自定义 unordered_map 和 unordered_set

亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 C 的标准模板库(STL)中,unorder…

可商用街头文化艺术海报封面手写涂鸦标题LOGO排版英文字体 FS163 TYPE FACE

Freestyle 163 (FS163)是一个受街头文化和城市艺术启发的视觉宣言。该字体旨在突出我们的文化和创意根源,反映了街头运动、城市艺术以及来自社会和边缘的故事。 FS163与面临挑战、质疑规范、放大被忽视声音的品牌和个人联系在一起&#xff0c…

【教程】可视化配置多台主机通过交换机实现互联通信

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 场景定义 配置步骤 1. 确认网络接口名称 2. 配置静态 IP 地址 3. 验证连接 主机间速率测试 场景定义 有两台主机通过网线与交换机相连。主…

HTTP/2 服务器端推送:FastAPI实现与前端集成指南

HTTP/2 服务器端推送:FastAPI实现与前端集成指南 注意:本文末尾附有完整示例代码,文中仅展示核心关键代码。完整代码可在GitHub仓库获取。 本文将会讲解HTTP2协议和相关配置实践。但是不要混淆,SSE的实现完全基于HTTP/1.1的持久连…

【CSS—前端快速入门】CSS 常用样式

CSS 常用 CSS 样式 1. 前端样式查询网站: MDN Web Docs (mozilla.org) w3school 2. border 2.1 借助 MDN 了解 border 我们借助 MDN 网站来学习 border 样式的使用: 2.2 border 常见属性 保存代码,打开页面: 对于标签不同样式的…

Autosar精华

应用层(APP) 目标:掌握如何设计软件组件(SWC)及其交互。 软件组件(SWC): 原子级SWC:独立的功能模块(如控制算法、传感器处理)。 端口(Ports):Sender-Receiver(数据传递)、Client-Server(服务调用)。 接口(Interface):定义组件间通信的数据类型(如Autosar …

【AD】AD软件中工具栏无IPC封装向导

问题:点击AD工具栏,无IPC封装向导 解决: 点击后点击install,关闭重启软件

【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创&#x1…

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…

42 session反序列化漏洞

参考资料:3. php反序列化从入门到放弃(入门篇) - bmjoker - 博客园 session文件上传漏洞利用原理 当在php.ini中设置session.upload_progress.enabled On的时候,PHP将能够跟踪上传单个文件的上传进度。当上传正在进行时,以及在将与session…

leetcode第77题组合

原题出于leetcode第77题https://leetcode.cn/problems/combinations/ 1.树型结构 2.回溯三部曲 递归函数的参数和返回值 确定终止条件 单层递归逻辑 3.代码 二维数组result 一维数组path void backtracking(n,k,startindex){if(path.sizek){result.append(path);return ;}…

基于html的俄罗斯方块小游戏(附程序)

一、前言 俄罗斯方块(Tetris)是一款经典的益智游戏,由苏联程序员阿列克谢帕基特诺夫(Alexey Pajitnov)于1984年开发。这款游戏最初是为减少计算机的恐怖效果而设计的,后来通过盗版传播到全球,成…