AWSのBedRock
- 基盤モデルによる生成 AI アプリケーションの構築 - Amazon Bedrock - AWS
- 手軽なのは否定できないがGoogle の Astra、OpenAI/MS AzureのGPT 4oに対していかにも不足なのは否めない。
- boto3からモデルを何も考えずシュッと扱えるのは便利。
def chat(msg): client = boto3.client("bedrock-runtime") # claude系は {prompt: "Human:\n\n .... \n\nnAssistant:"} としろって指定がある。 # max_tokens_to_sample は4000程度にしとけってコメントもある。 model="anthropic.claude-v2:1" response = client.invoke_model(modelId=model, body=json.dumps({"prompt":f"\n\nHuman:${msg}\n\nnAssistant:", "max_tokens_to_sample": 4000})) # バイトストリームが帰ってくるけどJSON形式なのでいったん全部結合してデコードする ret = [] for event in response.get("body"): ret.append(event) data = json.loads(b"".join(ret).decode("utf-8")) return data["completion"]
久しぶりに pythonのUnicodeエスケープの挙動に苦しめられてしまった。json.dumps(data, ensure_ascii=False)
が思い出せずに2時間をロスト。
実はAmazon Qとの違いがよくわかってないのである。
Viteめっちゃ便利
フロントエンドの...なんていうんだこれは、開発ツールセットなのかな、相当洗練されていてすごい。
例えば preactのプロジェクトを作ったんだけど、設定ファイルに以下のように書いておくと開発サーバが特定のパスだけバックエンドのサーバーにプロキシしてくれる。
import { defineConfig } from 'vite' import preact from '@preact/preset-vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [preact()], server: { proxy: { '/api': { target: 'http://127.0.0.1:5000/', changeOrigin: true, } }, } })
Flaskで別にローカルサーバ立てているとこれでちゃんと連動して動く。快適。昔、webpack_serveの挙動をこねこねしていたのが嘘のようだ。
from flask import Flask, jsonify, request app = Flask(__name__) def get_aws_tags(): ... 省略 ... @app.route('/api/tags') def service_tags(): return jsonify(sum(get_aws_tags(),[])) if __name__ == "__main__": app.run(debug=True)
preact進化してた
Hooksとかも導入されていてすごい。preact-routerもほとんど説明不要で使える。
viteで生成したプロジェクトでは cssのインポートとかも生成されていて安定感がある。
イベントハンドラの型指定とかはちょっと癖があるように思う。癖というか、
<select onChange={selectChangeHandler}> ...
とした時の selectChangeHandler
の型がさらっと出てこなくて、内部型とか彷徨うことが何度かあった。onChange={(e) => selectChangeHandler(e)}> ...
でいいような気もしつつ、レンダリングごとに無名関数が生成されるからよくないんですよと教えを受けて育ったので気持ち悪いというのがありつつ、ライトウェイトに書いてるトイツールなのでそんなん気にしてもなあというのがありつつ...。
Rust使い道を探している
Rustでなんか書きたいが仕事的にグルーコードばっかりだから用途が薄い。mackerelのプラグインとか書き直すのがやっぱりおすすめなのかなー。
とりあえず Rust 練習帳で grep
書いてる。「Goならわかるシステムプログラミング」も楽しかったけどこういう小さいツール書いているのはやはり楽しい。