鉄さびを食べる古細菌
Rustのcrateの名前として `archaeum` 使えそう。 archaea だと、ガチでarchaeaの遺伝子解析のためのcrateが同名で公開されていた。そういうのもあるのか。
Rustのcrateの名前として `archaeum` 使えそう。 archaea だと、ガチでarchaeaの遺伝子解析のためのcrateが同名で公開されていた。そういうのもあるのか。
前職で散々やった非同期ジョブ、クラスタリング、リーダー選出、などなどについて完全に忘れてしまった。1年経ってませんが...。 とりあえず、ActiveJobの組み込みのアダプターとか、各ジョブのconsumerの実装を眺めて思い出そう。 6月30日... 近すぎない...。
5月まで申請機能の大きな改修をしており(会社のお知らせに出ている公開情報でごわす)、6月からはまた複雑な機能の改善をしていた。PoCに近くて、ミドルウェアを書いてた時を思い出すような、なんかこう複雑な感じのことをしている...。 それも今日なんとか動いたので、明日からは実際に動かせるよう色々準備って感じかな。 ところで事情によりYAPC Fukuoka前後に別件が入り、参加できないような雰囲気が出てきた。じゃあ〜と思ってKaigi on Railsに応募しようかなと思っている...。 元々考えていた別のネタは被りそうなため、ちょっと別件で前から考えていたやつを作って出そうかなという気持ち。 とはいえ、倍率激しいからどうかな〜。
しかし、普通に転職後もたくさんプログラミングしてるな。少し心配していたが、マジ杞憂だった。 プログラミングしたそうなオーラがあまりに出てるのかもしれない。
予定管理エージェントできた。 どっちかというと、Google Calendar APIの使い方と、Google CloudでOAuth2認証画面を出させるやり方がダルかった。がGeminiに教えてもらった。 そしてうっかりGeminiのAPIを使いまくってしまった(Gemmaが外部関数呼び出し非対応なので...)。数円課金されそう。GeminiはなぜかWeb UIから使うときは課金されない。
昨今のAIエコシステムはミリしら勢なんだけど、ちょっとずつGeminiで遊んでいて。
Geminiである背景は、もともとGoogle CloudのAPIに慣れていること、雑にザクザク天然知能で書く場合(まあ流石にCopilotぐらい使うけど)にはGoが一番馴染むよね、というぐらいで、とはいえ別に他のプラットフォームのAIでもそんな変わらないとは思うが。 とにかくGeminiでエージェントのようなものを作っていて、色々気づきがあった。 ・まず、そもそもエージェントを作る上ではMCPの知識は必須ではない ・汎用的にしたい、もっと疎結合にしたい、吊るしのMCPサーバで外部の力を借りたいならサポートすればいい ・Geminiの場合、関数呼び出しという機構があり、設定で関数のスキーマを渡してあげると、特定の行動をするときに「この関数を呼んでください!」っていう特殊なレスポンスを返す ・エージェント実装はそのレスポンスをバリデートして外部の機能を呼び出す。例えば `get_time` という関数呼び出しのレスポンスが来たら、ローカルで `time.Now()` でも発行してあげてそのレスポンスをまたGeminiに送り返す。そうするとGeminiは現在時刻を知ることができ、後続のレスポンスで活用してくれる ・ここで言語のランタイム関数を素朴に呼ぶ、としても普通に動く ・汎用的なエージェントは、ちゃんと関数名とパラメータをパースして対応する機能をMCPで呼び出している ・あとは、プロンプト送る、関数呼び出しが来る、呼び出す、返却する、それを使ったレスポンスがくる、を繰り返す エージェントとしてのキモは、計算部分の外の世界について何にアクセスできるか、どういうCapabilityを持たせるかってことで、例えばカレンダーの予約を取得したり登録できればスケジュール管理エージェントだし、コードを書いて実行したりファイルを編集したりできるならコーディングエージェントになる。 この辺の「どこを外部の境界にするか」「どこに穴を開けてアクセスさせるか」の感覚って、OSや言語ランタイムを自作した人なら、システムコールじゃん、ってわかると思う。 なのでOSや言語ランタイムを自作すると便利(?)。
とまあ色々書いたが、関数呼び出しに関しては公式チュートリアルの通りではあるが(関数呼び出しの模式図もある)。 しかし、Googleの公式サンプルコードはなんか頭に入りづらい...。のでZennとかに何か自分で書くのは需要があるのかもしれん...。