Skip to content

Latest commit

 

History

History
255 lines (169 loc) · 9.11 KB

README.zh-CN.md

File metadata and controls

255 lines (169 loc) · 9.11 KB

Exif AI

NPM Downloads

2024-10-01.00.00.31.mov

关于

Exif AI 是一款功能强大的命令行工具,专为直接将AI生成的图像描述和/或标签写入图像文件的元数据而设计。该工具运用先进的AI模型来深入分析图像内容,并自动生成相应的描述性元数据,显著提升图像的检索效率和可用性。

使用示例

命令行

无需安装

如果您不想全局安装 Exif AI,完全可以选择使用 npx 命令来直接运行它。这样操作非常简单:

npx exif-ai -i example.jpeg -a ollama

全局安装版

如果您已经将 Exif AI 全局安装到您的系统,那么您可以直接在命令行中直接调用它来使用。

exif-ai -i example.jpeg -a ollama

选项

必选项:

  • -a, --api-provider <value>: 选择要使用的AI供应商,请指定以下名称之一(ollama对应Ollama,zhipu对应ZhipuAI,google对应Google Gemini,coze_bot对应扣子bot,openai对应OpenAI)

可选项:

  • -T, --tasks <tasks...>: 指定要执行的任务列表,支持的选项有description(生成描述)、tag(生成标签)和face(面部识别)。
  • -i, --input <file> : 指定要处理的图像文件路径。
  • -p, --description-prompt <text>: 自定义AI供应商生成描述的提示语,默认使用通用的图像描述提示。
  • --tag-prompt <text>: 自定义AI供应商生成标签的提示语,默认使用通用的图像标签提示。
  • -m, --model <name>: 指定要使用的AI模型,如果AI供应商支持自定义模型。
  • -t, --description-tags <tags...>: 指定要写入描述的EXIF标签名称列表,默认为常见的描述标签。
  • --tag-tags <tags...>: 指定要写入标签的EXIF标签名称列表,默认为常见的标签。
  • -v, --verbose: 启用详细输出,以便在调试时查看更多信息。
  • -d, --dry-run: 进行dry run,预览AI生成的内容但不实际写入图像文件。
  • --exif-tool-write-args <args...>: 提供额外的参数给ExifTool,用于写入元数据。
  • --provider-args <args...>: 提供额外的参数给AI供应商。
  • -w, --watch <path>: 监视指定路径中的新文件,当检测到新文件时自动处理。
  • --avoid-overwrite: 如果文件中已存在EXIF标签,则避免覆盖现有标签。
  • --ext <extensions...>: 指定要监视的文件扩展名,只有符合这些扩展名的文件会被处理。
  • --concurrency <number>: 在监视模式下,同时处理的文件数量上限。
  • --face-group-ids <group...>: 指定用于面部识别的面部组ID列表。
  • --repeat <number>: 如果AI生成结果被认为不可接受时,重复执行任务的次数。此参数通过允许多次尝试来确保输出质量。默认值为0。如果AI生成的描述超过10个字符且不是Markdown格式,则被视为可接受。AI生成的标签如果超过1个且不是Markdown格式,则被视为可接受。使用此参数将消耗更多令牌,可能会产生额外费用。使用时请自行承担风险。

示例用法:

exif-ai -i example.jpg -a ollama -p "描述这张图片"

作为库集成

若要在您的项目中将Exif AI作为库使用,请按照以下步骤进行:

  1. 导入Exif AI库。
  2. 使用库中提供的函数进行操作。

具体代码示例如下:

import { execute } from "exif-ai";

const options = {
  tasks: ["description"], // 要执行的任务列表
  input: "example.jpg", // 要处理的图像文件
  provider: "ollama", // 要使用的AI供应商名称
  descriptionTags: ["Description"], // 要写入描述的EXIF标签列表
  tagTags: ["TagsList"], // 要写入标签的EXIF标签列表
  descriptionPrompt: "描述这张图片", // 自定义AI供应商生成描述的提示
  tagPrompt: "根据主题、对象、事件、地点标记这张图片", // 自定义AI供应商生成标签的提示
  verbose: true, // 启用调试输出
  dry: false, // 预览AI生成的内容而不写入图像文件
  writeArgs: [], // 用于写入元数据的ExifTool的额外参数
  providerArgs: [], // AI供应商的额外参数
  avoidOverwrite: false, // 如果文件中已经存在EXIF标签,则避免覆盖
  doNotEndExifTool: false, // 不在写入元数据后结束ExifTool进程
};

execute(options)
  .then((result) => {
    console.log(result); // 处理结果
  })
  .catch((error) => {
    console.error(error); // 处理错误
  });

安装指南

要全局安装 Exif AI,请执行以下命令:

npm install -g exif-ai

任务

生成描述

description任务利用 AI 供应商生成图像的描述性文本。生成的描述将自动写入到指定的descriptionTagsEXIF 标签中。

生成标签

tags任务通过 AI 供应商为图像创建标签。这些标签将被记录在tagTags定义的 EXIF 标签里。

面部识别

face任务利用腾讯云的 API 在图像上进行面部识别。识别结果将被记录在tagTags中指定的 EXIF 标签里。

目前,face任务需要配置腾讯云 API 密钥,并且您必须已经开通了腾讯云的人脸识别服务。如果您尚未拥有腾讯云账户,请先注册并开通相关服务。

export TENCENTCLOUD_SECRET_ID=your_tencentcloud_secret_id
export TENCENTCLOUD_SECRET_KEY=your_tencentcloud_secret_key

注意

请确保您安全地管理您的API密钥。不要在公共仓库或其他公共论坛中暴露它们。

API供应商

Exif AI旨在利用各种API供应商来生成图像描述和标签。我们目前支持五个主流的供应商,每个供应商都提供独特的功能和集成选项。以下是支持供应商的摘要,包括它们的要求和功能详情。

支持的供应商

  • ZhipuAI:一家以先进算法著称的尖端AI服务供应商。访问此服务需要API密钥。
  • Ollama:一种创新的本地AI服务,直接在您的机器上运行。此选项不需要API密钥,提供无缝且私密的体验。
  • Google Gemini:由Google提供支持的强大AI服务,以其高质量的图像处理能力而闻名。
  • Coze: 扣子是新一代AI大模型智能体开发平台。您可以使用API来调用扣子的bot或工作流。
  • OpenAI:一家领先的AI服务供应商,以其广泛的AI工具和应用而闻名。与ZhipuAI一样,它需要API密钥才能访问。

自定义供应商

对于寻求扩展Exif AI功能或与额外AI服务集成的用户,我们提供开发自定义供应商的灵活性。通过实现供应商接口,您可以创建自定义供应商以集成其他AI服务,或根据您的特定需求定制图像描述生成过程。

配置

OpenAI

要使用 OpenAI,您需要配置 API 密钥。您可以通过以下步骤设置环境变量:

export OPENAI_API_KEY=your_openai_api_key

如果您需要使用与 OpenAI API 兼容的自定义 API 服务,可以设置 OPEN_API_BASEURL 环境变量,指向所需的 API 端点:

export OPEN_API_BASEURL=https://api.example.com

智谱AI

要使用智谱AI,您需要设置 API 密钥。通过以下命令设置环境变量:

export ZHIPUAI_API_KEY=your_zhipuai_api_key

如果您还没有智谱AI的 API 密钥,可以前往智谱AI官网注册并获取。

Google Gemini

使用Google Gemini时,您需要设置 API 密钥。以下是设置环境变量的命令:

export API_KEY=your_google_api_key

Coze

要使用Coze Bot,您需要设置 API 密钥。设置环境变量的命令如下:

export COZE_API_KEY=your_coze_api_key

在中国大陆地区使用 Coze 时,请确保配置正确的端点设置:

export COZE_ENDPOINT=https://api.coze.cn

与 Coze API 交互时,您可以使用以下命令格式,其中 -m 参数指定了 bot 的 id:

exif-ai -a coze_bot -i image.jpg -m 7402199305639034921

在此处,-a coze_bot指定了Coze API,-i image.jpg表示输入图像文件,而-m 7402199305639034921是您希望使用的bot的id。

Ollama

Ollama 在本地运行,因此不需要 API 密钥。请确保已正确安装和配置 Ollama。更多安装和设置信息,请参阅Ollama的官方文档。。

若要使用远程 Ollama 服务,您可以在providerArgs中指定服务 URL:

exif-ai --providerArgs "http://ollama.example.com:8080" -a ollama -i image.jpg

在使用库集成时,providerArgs可以这样设置:

providerArgs: ["http://ollama.example.com:8080"],

开发

前置条件

  • Node.js >=16
  • pnpm

克隆仓库

首先,将Exif AI仓库克隆到您的本地机器:

git clone https://github.com/tychenjiajun/exif-ai.git
cd exif-ai

安装依赖

接下来,使用 pnpm 安装所需的依赖项。

pnpm install

构建

pnpm run build

Watch

pnpm run watch