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

LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型

根据图片生成推广文案, 用的HuggingFace中的image-caption模型

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统

生成效果
在这里插入图片描述

先安装相关的lib

pip install --upgrade langchain
pip install transformers
pip install pillow
pip install torch torchvision torchaudio

根据以下图片生成的文案
在这里插入图片描述
这段代码展示了如何使用深度学习模型来生成图像的字幕,并结合LangChain智能体框架进行自动化处理.(代码为黄佳老师的课程Demo,如需要知道代码细节请读原文):

实现代码 pic_talk.py

import os  # 导入os库,用于操作系统级别的接口,比如环境变量
import requests  # 导入requests库,用于执行HTTP请求
from PIL import Image  # 导入PIL库的Image模块,用于图像处理
from transformers import BlipProcessor, BlipForConditionalGeneration  # 导入transformers库中的Blip模块,用于图像字幕生成
from langchain.tools import BaseTool  # 导入langchain的BaseTool类,用于创建新的工具
from langchain import OpenAI  # 导入langchain中的OpenAI模块,用于与OpenAI API交互
from langchain.agents import initialize_agent, AgentType  # 导入langchain的agent初始化和类型定义
from dotenv import load_dotenv  # 导入dotenv库,用于加载环境变量load_dotenv()  # 加载.env文件中的环境变量# 初始化图像字幕生成模型
hf_model = "Salesforce/blip-image-captioning-large"  # 指定使用HuggingFace中的模型processor = BlipProcessor.from_pretrained(hf_model)  # 初始化处理器,用于图像的预处理
model = BlipForConditionalGeneration.from_pretrained(hf_model)  # 初始化模型,用于生成字幕# 定义图像字幕生成工具类
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 captiondef _arun(self, query: str):raise NotImplementedError("This tool does not support async")  # 异步函数未实现# 初始化并运行LangChain智能体
llm = OpenAI(temperature=0.2)  # 使用OpenAI模型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'  # 定义图像URL
agent.run(input=f"{img_url}\n请创作合适的中文推广文案")  # 使用智能体处理图像并生成字幕

在这里插入图片描述

代码

  • https://github.com/zgpeace/pets-name-langchain/tree/feature/picTalk

参考

  • https://github.com/huangjia2019/langchain/blob/main/00_%E5%BC%80%E7%AF%87%E8%AF%8D_%E5%A5%87%E7%82%B9%E6%97%B6%E5%88%BB/02_%E7%9C%8B%E5%9B%BE%E8%AF%B4%E8%AF%9D.py

相关文章:

  • 【Windows】执行tasklist/taskkill提示“错误:找不到”或者“ERROR: not found”的解决方案
  • 【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷6
  • 简单使用YOLOv5自己训练模型
  • 创新研报|顺应全球数字化,能源企业以“双碳”为目标的转型迫在眉睫
  • STM32 -Bin/Hex文件格式解析
  • 线性表之顺序表
  • Oracle 数据库基线安全加固操作
  • 设计模式—里氏替换原则
  • WordPress站点屏蔽过滤垃圾评论教程(Akismet反垃圾评论插件)
  • ubuntu22.04 arrch64版在线安装maven
  • 浏览器是什么
  • Rust语言入门教程(五) - 流控制语句
  • 【高级网络程序设计】Week2-3 HTML
  • Log4j2.xml不生效:WARN StatusLogger Multiple logging implementations found:
  • Linux python安装 虚拟环境 virtualenv,以及 git clone的 文件数据, 以及 下资源配置
  • [case10]使用RSQL实现端到端的动态查询
  • 【391天】每日项目总结系列128(2018.03.03)
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 77. Combinations
  • avalon2.2的VM生成过程
  • canvas 五子棋游戏
  • PAT A1120
  • React-flux杂记
  • SQLServer之创建显式事务
  • Vue学习第二天
  • 阿里研究院入选中国企业智库系统影响力榜
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 小李飞刀:SQL题目刷起来!
  • 硬币翻转问题,区间操作
  • Spring第一个helloWorld
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #1014 : Trie树
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C#)获取字符编码的类
  • (zhuan) 一些RL的文献(及笔记)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (三) diretfbrc详解
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • [1181]linux两台服务器之间传输文件和文件夹
  • [Android Studio] 开发Java 程序