0xf

日記だよ

休暇メモ

AWSのBedRock

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"]

久しぶりに pythonUnicodeエスケープの挙動に苦しめられてしまった。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ならわかるシステムプログラミング」も楽しかったけどこういう小さいツール書いているのはやはり楽しい。