0
0

Gemini API ― File Upload/画像認識

Last updated at Posted at 2024-09-24

概要

(日記)前回

の続き。Geminiに画像の説明などを求める。

環境

  • Ubuntu 24.04
  • Node.js v22.4.1

Geminiに画像ファイルをアップロード

画像などのファイルをGeminiにアップロードする。

src/fileUpload.ts
import { FileMetadata, GoogleAIFileManager } from "@google/generative-ai/server"
async function main() {
    const file = process.argv[2]
    const fileManager = new GoogleAIFileManager(process.env.GOOGLE_API_KEY ?? "")
    const metaData: FileMetadata = { mimeType: "image/jpeg", displayName: `Image file '${file}'` }
    const uploadResponse = await fileManager.uploadFile(file, metaData)
    console.log(uploadResponse)
}
main()
アップロード実行
export GOOGLE_API_KEY=<your-api-key>
npx -y ts-node src/fileUpload.ts aaa.jpg 
結果(部分)
{  file: { uri: 'https://generativelanguage.googleapis.com/v1beta/files/b7v8vds91atw', ...}}

ファイルの寿命は48h

Geminiに画像を説明させる

src/chatAboutFiles.ts
import { GoogleGenerativeAI, Part, FileDataPart } from "@google/generative-ai"
async function main() {
    const url = process.argv[2]
    const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY ?? "")
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" })
    const files: Array<Part> = [{ fileData: { fileUri: url, mimeType: "image/jpeg" } },]
    const chat = model.startChat()
    async function qa(q: string) {
        const a = await chat.sendMessage(q)
        console.log(`Q: ${q}`)
        console.log(`A: ${a.response.text()}`)
        console.log(a.response.usageMetadata)
    }
    await chat.sendMessage(files)
    await qa("画像を20文字で説明して")
    await qa("カード上の透かし文言は何")
}
main()
実行
npx -y ts-node src/chatAboutFiles.ts https://generativelanguage.googleapis.com/v1beta/files/b7v8vds91atw

ファイルはGemini上のURLで指定される

結果
Q: 画像を20文字で説明して
A: バトルスピリッツの新弾「全天の覇神」が10月26日発売!
{
  promptTokenCount: 372,
  candidatesTokenCount: 21,
  totalTokenCount: 393
}
Q: カード上の透かし文言は何
A: カード上の透かし文言は「SAMPLE」です。
{
  promptTokenCount: 404,
  candidatesTokenCount: 12,
  totalTokenCount: 416
}

ソースコード

参考

サンプル画像(XよりTCGバトルスピリッツのカード紹介): https://pbs.twimg.com/media/GXpZw6casAAbMCX?format=jpg&name=4096x4096

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0