概要
(日記)前回
の続き。Node.jsで試す。
環境
- Ubuntu 24.04
- Node.js v22.4.1
Project準備
generateContent() ―― 一問一答
src/generateContent.ts
import { GoogleGenerativeAI } from "@google/generative-ai"
async function main() {
const key = process.env.GOOGLE_API_KEY ?? ""
const genAI = new GoogleGenerativeAI(key)
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" })
async function qa(q: string) {
const a = await model.generateContent(q)
console.log(`Q: ${q}`)
console.log(`A: ${a.response.text()}`)
}
await qa("三角、四角、五角形、の次は? 簡潔に")
await qa("その次は? 簡潔に")
}
main()
Run
export GOOGLE_API_KEY=<your-api-key>
npx -y ts-node src/generateContent.ts
結果
Q: 三角、四角、五角形、の次は? 簡潔に
A: 六角形。
Q: その次は? 簡潔に
A: 「その次は」は何の続きについてですか?もう少し詳しく教えてください。
startChat()/sendMessage() ―― 文脈を覚えてほしい
src/sendMessage.ts
import { GoogleGenerativeAI } from "@google/generative-ai"
async function main() {
const key = process.env.GOOGLE_API_KEY ?? ""
const genAI = new GoogleGenerativeAI(key)
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" })
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 qa("三角、四角、五角形、の次は? 簡潔に")
await qa("その次は? 簡潔に")
await qa("その前は? 簡潔に")
}
main()
Run
export GOOGLE_API_KEY=<your-api-key>
npx -y ts-node src/sendMessage.ts
結果
Q: 三角、四角、五角形、の次は? 簡潔に
A: 六角形です。
{ promptTokenCount: 16, candidatesTokenCount: 5, totalTokenCount: 21 }
Q: その次は? 簡潔に
A: 七角形です。
{ promptTokenCount: 31, candidatesTokenCount: 5, totalTokenCount: 36 }
Q: その前は? 簡潔に
A: 三角形です。
{ promptTokenCount: 46, candidatesTokenCount: 4, totalTokenCount: 50 }
この例のToken合計(平均)
gemini-1.5-flash: 50,48,50 (49.3)
gemini-1.0-pro: 41,41,41 (41)
gemini-1.5-pro: statusText: 'Too Many Requests' (2回/分制限)
今回のソースコード