Carpe Diem

備忘録

2024-01-01から1年間の記事一覧

Slack Botでアイコンをメッセージごとに変更したい

背景 slack botが投稿するメッセージによって伝えたい内容が異なるため、アイコン(アバター)をそれぞれ変えたい けれどslackアプリはたくさん管理するのは大変 という状況の時に、1つのslackアプリでもメッセージ投稿でアイコンを変更する方法について紹…

CELでカスタム関数を使う

CEL

概要 CELは標準的な演算子や関数に加え、独自のカスタム関数を定義して機能を拡張することが可能です。 今回はカスタム関数を使ってみる際に必要な前提知識を踏まえながらサンプルコードを紹介します。 環境 go v1.22.1 cel-go v0.20.1 カスタム関数の作り方…

CELで独自のオブジェクトをprotobufを使って変数定義する

概要 CELでは評価式で扱う変数をEnvironment内で定義しますが、既存のデータモデルを使いたい場合は 同じ定義を都度作らないといけない 変更があった際の追従漏れが発生する といった手間が発生してしまいます。 しかしそのデータモデルがprotobufで定義され…

CELでASTを外部に保存する

CEL

概要 CELのキーコンセプトでは Control PlaneでCEL式をParse & Checkし、生成されたASTを保存 Data Planeで保存したASTを読み取り、インプット値を評価する と説明されていました。 主に管理ツール等で前者のControl Planeを実装し、オペレーターに自由に評…

CEL(Common Expression Language)

CEL

概要 CEL(Common Expression Language)とは、Google によって開発された軽量で高速な式評価言語です。 そのシンプルさと効率性から、セキュリティポリシー、リソースフィルタリング、データ検証などに使われます。 例えばプロダクションでは以下のような利用…

LLMのプロンプト

概要 LLMにおけるプロンプトの構成要素を理解して扱うことで 期待通りの回答を得られる(精度が高くなる) なぜTemplateはこの書き方をするのかが分かる なぜagent_scratchpadのような変数がいるのかが分かる といったようになります。 プロンプト 構成要素 …

LlamaIndexでPDFに対してベクトル検索を行う

概要 LlamaIndexを使うと非常に簡単にRAG(Retrieval-Augmented Generation)を使った検索システムを作ることができます。 今回はLLMにない情報(PDF)をベクトル化して検索できる方法を紹介します。 環境 python 3.11.8 streamlit 1.31.1 llama-index 0.10.14…

VS CodeのPython環境をDev Containersで構築する

概要 PythonはGoと違ってライブラリのdeprecatedや破壊的変更が多いため、環境やライブラリバージョンの固定が非常に重要です。 Dev Containers poetry 仮想環境(venvなど、今回はpoetryのvirtualenv) を使うことで、それらを固定してチーム内で安定した開発…

GKE Ingressのヘルスチェック生成ルール

概要 GKE Ingressを使うとGCE LBのヘルスチェックが自動的に作成されますが、一定のルールがあります。 これらを理解していないと期待しないヘルスチェックが作成され、疎通ができなかったりするのでまとめておきます。 生成ルール GKE Ingressは次の流れで…

Function callingのJSON Schemaをpydanticで生成する

背景 Function callingでJSONを定義する際はJSON Schemaを用いますが、JSON Schemaは覚えることが多く不慣れだと非常に扱いにくいです。 pydnaticを使うとクラス定義から簡単にJSON Schemaを生成できるので、PythonでJSON Schemaを利用する際はおすすめです…

pyenvからインストールする際にSSLがないというエラー

背景 pyenvでpython 3.10.13をインストールしようとしたところ、次のようなエラーを受けました。 $ pyenv install 3.10.13 python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.10.13.tar.xz... ->…

tmuxでコピーモードを使った時にDeepLに渡されてしまう

背景 tmuxでコピーモードで範囲選択によるコピー機能をよく使っていますが、そこでコピーしたものがそのままDeepLの翻訳の方へ渡されてしまう問題に悩まされてました。 今は有料版なのでコピーしたものが学習データに使われることはありませんが、偶にDeepL…

ChatGPTのオプトアウト申請方法(2023/10以降版)

概要 WebコンソールのChatGPTでは入力したデータを学習させない方法として2種類のやり方が提供されています。 設定からChatの履歴を保持しないようにする フォームでオプトアウト申請を行う 前者は簡単にできる一方で、Chatの履歴が使えず不便になります。 …

Backstage でGitHub Orgを用いた認可を導入する

概要 christina04.hatenablog.com ではGitHubのIDを持っていればログインできる認証機能を追加しました。 今回は「そのGitHubアカウントが特定のGitHub Organizationに所属しているかどうか」を使ってページを閲覧できるかどうか認可する仕組みを導入します…