プログラミング
whisperは OpenAI がリリースした音声書き起こしモデル。とその実装。実装? 「モデル」と「実装」って言葉が乱舞しがちな分野である。正直わからん。 whisper いくつか亜種がある。 openai-whisper(本家) 音声ファイル読み込み周りで FFmpeg への依存があ…
諸事情によりコンテナでWhisperを実行したくなったと思いねえ。しかし初回ダウンロードにはとても時間がかかる。毎回ロードするのがわかっているならモデルファイルは焼いておきたい。 FROM python:3.13-trixie ENV DEBIAN_FRONTEND=noninteractive \ WHISPE…
まあソースコード見た感じも最小限の実装という感じではある。
標準の slack_send_message ツールはブロックを受け付けてないので全てテキストモードで投稿される。 tools/src/strands_tools/slack.py at main · strands-agents/tools · GitHub まあでも小さいコードなので、以下のようなパッチをいれてしまえば自然な動…
手軽なんだけど開発途上〜って感じ。 tools/src/strands_tools/slack.py at main · strands-agents/tools · GitHub のコメントに書いてることがおおむね全て。 以下環境変数が設定されてれば動く。 SLACK_BOT_TOKEN: xoxb-... SLACK_APP_TOKEN: xapp-... 要…
GitHub - strands-agents/sdk-python: A model-driven approach to building AI agents in just a few lines of code. import readline # noqa: F401 from strands import Agent, tool from strands.models import BedrockModel @tool def word_count(text):…
現象 % brew upgrade codex Warning: Treating codex as a cask. For the formula, specify the --formula flag. To silence this message, use the --cask flag. Error: Cask 'codex' is not installed. --formulaつけろとサジェストされる。まあ、基本的に…
デコレータで関数を返す以外のことができる、ということで試してみた。できる。使い道は...なんかある? import sys def closable(func): class _: def __enter__(self): print("enter") return self # exc_type は例外型、exc_value は例外に渡されたオブジ…
google-crc32cの警告が鬱陶しいので抑制する - 0xf に関連して 以下のようにエラーが出てくるのが抑制のしようがなくて、 WARNING: All log messages before absl::InitializeLog() is called are written to STDERR E0000 00:00:1760337382.027649 10064653…
無念である。 def stream( self, input: InputT | Command | None, config: RunnableConfig | None = None, *, context: ContextT | None = None, stream_mode: StreamMode | Sequence[StreamMode] | None = None, print_mode: StreamMode | Sequence[Stream…
前回: リスト内包表記で改行入れるとスマートじゃん - 0xf ちょっとローカルで立てた gpt-oss とお話しするCUIを書いていた。で、LangGraph 経由で Ollama から戻ってくるメッセージを処理するところでどうしてもループが重なってインデントが深くなってしま…
OllamaのAPIからメタデータを取得しようとしたらうまくいかない、という場面。 DEBUG] token_info type: , value: {'input_tokens': 141, 'output_tokens': 121, 'total_tokens': 262} [DEBUG] Parse error: Expecting property name enclosed in double quo…
書き方すぐわかんなくなるのでメモ。 # google-crc32c のC拡張がない環境では大量の警告が出るため抑制する warnings.filterwarnings( "ignore", category=RuntimeWarning, module="google_crc32c", ) from langchain_google_vertexai.model_garden import C…
こういう話。 fruit = ["apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew"] fruit_dict = { name: len(name) for name in fruit if name.endswith("e") } print(fruit_dict) #=> {'apple': 5, 'date': 4, 'grape': 5} 辞書を…
LangChain本読んでて、@chain の作りがスマートだなー! と思った。 langchain/libs/core/langchain_core/runnables at master · langchain-ai/langchain · GitHub 実装はゴツい! ともあれ、デコレータで関数を返す以外の発想がなかった。こんな感じですよ。 …
なんか今時はブラウザの中でAIが動くらしいぞ!!! ということで、触ってみたわけです。 まずアプリケーションを cursor-agent に作らせてみた。 こういうやつ。よくあるチャットUIである。よくあるものなので、AIが苦もなく作ってくれる。便利だ。 GitHub - m…
鬼滅の刃劇場版が公開されたらしいですね。3時間ということで、膀胱に自信がない人は配信を待つのが吉という雰囲気がある。 さて、今日のkiroくんですが、どうも無限ループを自力で発見することは得意ではない様子。Claude Code とか Cursor でも同様の事象…
kiro 出てましたね。 普通の使い勝手についてはすでに同僚がシュッと試していたのでそちらを参照いただくといいとして、 AWS の エージェント IDE Kiro を使ってみた kiroへのログイン方式として、AWS IAM Identity Center での Q Developer Pro の設定をし…
ink は ClaudeCode のCUIを組み立てているReactベースの何かです。何か、というのは、なんだろう...? と思ってしまうからですね。これはなんなんだろう。フレームワーク? github.com 以下の簡単な計算機(足し算しかできない)は、ほぼ Cursorの一発出しなん…
3.5から導入されてたやつ。見慣れた感じだ。はい。 import asyncio async def greet(message: str): await asyncio.sleep(1) print(message) async def main(): await greet("Hello, world!") if __name__ == "__main__": asyncio.run(main())
uvの環境が不正な感じになってたので修正した。 といってもアンインストールして入れ直しただけではある。 asdf 0.16.x の破壊的な変更に対応 を参考にした。 まずhomebrew の autoremove を知らなかった。ははーん。 brew uninstall --force asdf # 未使用…
⏺ Write(infrastructure/deploy-scripts/validate.sh) ⎿ Wrote 83 lines to infrastructure/deploy-scripts/validate.sh #!/bin/bash # CloudFormation Template Validation Script set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW=…
ここでのAIはめちゃくちゃ普及してきたLLM系のやつ。 そもそも当たり前に汎用のAIバックエンドとして濫用されてしまうリスクがある。オープンリダイレクタとして使われる、みたいな話と同様の構造がある。そしてタチが悪いことに、これには費用がめっちゃか…
AIはターミナルの幅と日本語文字の表示幅計算が苦手 ⏺ 修正内容 問題の原因 boxWidth := terminalWidth - 4 // これが原因 ターミナル幅85から4を引いて81文字の罫線になっていました。 修正後 boxWidth := terminalWidth - 2 // 左右の枠線文字(┌┐)分だ…
入れ子の markdown はどのように表現するのがスマートなんだろうか。つまり、markdownの中にさらにコードブロックがあって...というとき。 ## hello ```go type WorkflowError struct { WorkflowName string } ``` みたいなやつはどうシンタックスカラーリン…
普通に match でいけるようになってた。便利。 import fire from typing import Union, Tuple def try_parse(value) -> Union[float, str]: try: return float(value) except (ValueError, TypeError): return str(value) def parse_input(a, b) -> Tuple[Un…
.cursor/rules .cursor/rules 以下は開発しようとする対象のタイプによってテンプレートを取り込み分けるみたいなイメージなんだなたぶん。 たとえば python でアプリケーションを作る際に、app/*.py についてはこう、scripts/*.py についてこう、みたいなル…
from flask import Flask, Response, stream_with_context from flask_cors import CORS import json import time app = Flask(__name__) CORS(app) @app.route('/chunked') def chunked(): def generate(): for i in range(3): yield f"data: {json.dumps({…
python の sdkがあるので眺めていこう。 GitHub - modelcontextprotocol/python-sdk: The official Python SDK for Model Context Protocol servers and clients まずは手元で動作を確かめる。python -m pip install mcp "mcp[cli]"して mcp モジュールをイ…
AIに「ちょっとMCP作ってみたいので雛形のプロジェクトを頼むよ。お試しなので内容はごく簡単なものでいいよ」とお願いしたんだけど、 この実装は最小限の機能を提供していますが、以下のような機能を追加することで拡張できます: - チャット機能 - ブロッ…