今日のテクノロジーの世界では、開発者が求めるのは速度と効率性です。このニーズに応えるために開発されたのが「Bun」、新時代の高速JavaScriptランタイムです。
最近注目を集めるこのプロジェクト、gemini-demoの作成に焦点を当てて、Bunの魅力と可能性を探ります。
先程公開されたGemini ProのAPIを使ってみます。詳細はサンプルプロジェクトは下記を参照してください。
Bunとは?
Bunは、高速なオールインワンのJavaScriptランタイムで、Node.jsに代わる有望な代替品として注目されています。このランタイムは、パフォーマンスの向上に特化しており、多くのJavaScriptプロジェクトでその速度を実感できます。
各OSの環境に応じてbunをインストールしてください。
gemini-demoプロジェクトの開始
gemini-demoは、bun
コマンドを使用して簡単に始めることができます。この初期設定は、Bunの簡潔さと効率性を示しています。プロジェクトのセットアップは数秒で完了し、開発者はすぐにコーディングに取り掛かることができます。
API KEYの設定
プロジェクトを使用する場合、Google AI StudioからAPI KEYを取得する必要があります。
取得後は.env.local
ファイルを新規作成し、プロジェクト内で簡単に使用できます。
API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
インストールと実行
Bunを使用すると、依存関係のインストールが非常に迅速になります。bun install
コマンドは、従来のnpmやyarnに比べて圧倒的に速いです。
$ bun install
チャット応答
テキスト応答の確認ができます。
import { GoogleGenerativeAI } from '@google/generative-ai'
const genAI = new GoogleGenerativeAI(process.env.API_KEY as string)
async function run() {
const model = genAI.getGenerativeModel({ model: 'gemini-pro' })
const prompt = `
# 目的
あなたは優秀なタイトルデザイナーです。
ブログ記事のための魅力的でSEO最適化されたタイトルを3つ提案してください。
# ブログタイトル
生成AIについて
`
const result = await model.generateContent(prompt)
const response = await result.response
const text = response.text()
console.log(text)
}
run()
実行コマンド
$ bun run chat.ts
実行結果
1. 生成AI: ゲームチェンジャーとしての可能性を解き明かす
2. 人工知能の未来: 生成AIがもたらすもの
3. 自動化の未来: 生成AIがもたらすビジネスへの影響
2023年12月14日現在ですが、「ChatGPT」のキーワードが含まれていると、エラーが返ってきました。
画像解析
画像解析の機能を簡単にテストすることができます。
cat.png
の画像は下記を使用しました。
import { GoogleGenerativeAI, Part } from '@google/generative-ai'
import * as fs from 'fs'
const genAI = new GoogleGenerativeAI(process.env.API_KEY as string)
// URLからbase64エンコードされた文字列を取得します。
async function urlToGenerativePart(url: string, mimeType: string): Promise<Part> {
const response = await fetch(url)
const arrayBuffer = await response.arrayBuffer()
return {
inlineData: {
data: Buffer.from(arrayBuffer).toString('base64'),
mimeType,
},
}
}
// ローカルファイル情報を GoogleGenerativeAI.Part オブジェクトに変換します。
function fileToGenerativePart(path: string, mimeType: string): Part {
return {
inlineData: {
data: Buffer.from(fs.readFileSync(path)).toString('base64'),
mimeType,
},
}
}
async function run() {
// テキストと画像の入力(マルチモーダル)には、gemini-pro-vision モデルを使用します
const model = genAI.getGenerativeModel({ model: 'gemini-pro-vision' })
const prompt = '何が写っている?'
const imageParts: Part[] = [
fileToGenerativePart('cat.png', 'image/png'),
await urlToGenerativePart(
'https://1.bp.blogspot.com/-tVeC6En4e_E/X96mhDTzJNI/AAAAAAABdBo/jlD_jvZvMuk3qUcNjA_XORrA4w3lhPkdQCNcBGAsYHQ/s1048/onepiece01_luffy.png',
'image/png'
),
]
const result = await model.generateContent([prompt, ...imageParts])
const response = await result.response
const text = response.text()
console.log(text)
}
run()
実行コマンド
$ bun run vision.ts
実行結果
これは猫とルフィのイラストです。
まとめ
gemini-demoプロジェクトは、Bunの強力な機能を活用しています。
このプロジェクトを通じて、開発の速度と効率が大幅に向上し、JavaScriptの未来がさらに明るくなることは間違いありません。Bunは、現代のJavaScript開発において、重要な役割を果たすことが期待されています。
Gemini ProのAPIを使ったサンプルアプリはかなり簡単に作成できました。
料金も安いので、セキュリティ問題がクリアされれば、Geminiも使いやすいと感じます。
システム化のご検討やご相談は弊社までお問い合わせください。