Open9
llm
firebaseのgenkitが良さそう
参考資料: zenn - 生成 AI 機能開発を高速化する Genkit を用いて Function Calling を実装してみた
sampleやってみる
github: tanabee/genkit-summarize-webpage
genkitのtutorial: Get started
※細かい手順は省略
事前にollamaをセットアップしておく
参考: github - ollama/ollama
(ollamaをinstall後に)
$ ollama pull gemma2
- ollamaのサーバー起動を確認
$ curl http://127.0.0.1:11434
Ollama is running
- genkitのollamaプラグインを追加
$ pnpm add genkitx-ollama
このコードでいける
import { ollama } from 'genkitx-ollama'
configureGenkit({
plugins: [
ollama({
models: [
{
name: 'gemma2',
type: 'generate', // type: 'chat' | 'generate' | undefined
},
],
serverAddress: 'http://127.0.0.1:11434', // default local address
}),
],
// Log debug output to tbe console.
logLevel: 'debug',
// Perform OpenTelemetry instrumentation and enable trace collection.
enableTracingAndMetrics: true,
})
ollamaはtoolが未サポートっぽいのでエラーになる 😢
Model "ollama/gemma2" does not support tools, but some tools were supplied to generate(). Please call generate() without tools if you would like to use this model.
secret managerの設定でハマったメモ
secret managerへの値設定は以下のいずれでも良い。
- パターン1:
firebase functions:secrets:set
コマンドをCLIで実行
$ firebase functions:secrets:set HOGE
? Enter a value for HOGE [input is hidden]
- パターン2:
defineSecret
をtsコード内で定義
import { defineSecret } from "firebase-functions/params";
defineSecret('HOGE');
この状態で firebase deploy --only functions
でデプロイすると入力できる
$ firebase deploy --only functions
? This secret will be stored in Cloud Secret Manager (https://cloud.google.com/secret-manager/pricing) as HOGE. Enter a value for HOGE: [hidden]
実際にはパターン1とパターン2は併用できる。
defineSecret
の挙動としては、すでにCloud Secret Managerで定義されていれば何もしない(assertに近い挙動)
うまくいくとCloud Functionsの変数にSecretとして表示される(´∀`)
と思ったら、パターン2の defineSecret
バージョンだと以下のエラーが出ちゃう、、、
Error: Cloud Secret Manager has no latest version of the secret defined by param HOGE