Open9

llm

yukinagaeyukinagae

事前に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,
})
yukinagaeyukinagae

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.
yukinagaeyukinagae

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に近い挙動)

yukinagaeyukinagae

うまくいくとCloud Functionsの変数にSecretとして表示される(´∀`)

yukinagaeyukinagae

と思ったら、パターン2の defineSecret バージョンだと以下のエラーが出ちゃう、、、

Error: Cloud Secret Manager has no latest version of the secret defined by param HOGE