2024年10月24日
前回 ファイル保存なしでWhisper APIにLINE Messaging APIから音声を渡す という記事を書きましたが、OpenAI の API を使うと決める前はラズパイ上で Whisper を動かすことを企んでいました。今回はその記事になります。今回もファイル保存せずにやります。 作った API を Raspberry Pi 5 で動かしてみたのですが、数秒の medium モデルで音声を文字起こしするのに1〜2分はかかるので使い物にならなくてやめました。 ## 環境 * Python 3
2024年10月17日
LINE Messaging API でユーザーから送られてきた音声を OpenAI の Whisper API に渡す方法はググるとたくさん出てきますが、私が見た範囲ではどれもサーバー内に一時ファイルを保存しているものだったので、ファイル保存なしでメモリ上でなんとかする方法を探してみました。 ## 想定読者 * LINE Messaging API の使い方を知っている人 * LINE ボットの作り方の解説は省きます * 一時ファイルの保存はしたくないというこだわりがある人 ## 環境 *
2024年2月20日
Pydantic V2 が2023年6月にリリースされました。結構いろいろ変わっていて移行作業はそこそこ大変な気がしますが対応される方は Migration Guide を読んで頑張ってください。 私はというと V1 のころに Pydantic の `@validator` デコレータをカスタムしまくったので、V2 でそれがほぼ使えなくなってしまいました。そもそもなんでカスタムしたのかというと、バリデータのメソッドに DB にアクセスするためのセッションオブジェクトとかを渡したかったからでした。V2 で
2024年1月24日
個人で使っている LINE bot を賢くしたくて、ChatGPT を組み込んでみました。ChatGPT を自分のアプリに組み込むのは初めてなのですが、LangChain の機能の豊富さに驚かされました。 ## 対象読者 * 人間のあいまいな指示を機械が実行できるアクションに落とし込ませたい人 ## 検証環境 * Python 3.11.6 * LangChain 0.1.1 * langchain-openai 0.0.2.post1 ## できたもの ```python from data
2023年11月18日
Rye は Rust 製の Python パッケージマネージャです。まだ「実験的」なステータスなので全ての方にお勧めできる段階ではないかもしれないですが、十分に実用的で安定していると思います。Pipenv や Poetry との違いは、パッケージ管理だけでなく、Python バージョンの管理までやってくれるところが特徴で、Pipenv/Poetry + pyenv が1つのツールにまとまっているイメージです。 さて、今回は Rye を Docker コンテナで使う時のポイントをまとめてみました。Rye
2023年11月9日
世の中には AWS Signature V4 署名の実装方法についての記事はたくさんありますが、その署名を付与して検証する側(サーバー)の実装方法について見つけるのは難しいです。AWS API Gateway を使えば簡単に自分で書かなくても良いのでそれはそうなのですが、AWS SigV4 は curl のオプションとしても使える くらいの地位を獲得しているので、AWS SigV4 を利用した認証機能の実装方法についての記事があってもいいでしょう。 ということで、今回は Python と FastAPI
2023年5月15日
前回の記事では SQLAlchemy の Session について解説しました。今回はその応用として、Celery においてどのように Session を管理するかを考えたいと思います。 関連記事: * SQLAlchemyのセッション・トランザクションを理解する * SQLAlchemyで'MySQL server has gone away'が発生した時の対処法2つ ## 結論 以下のように DB 操作を行うタスクのためのクラスを作ります。 ```python from typing impo
2023年5月14日
SQLAlchemy の Session や scoped_session、トランザクションに関して理解していきます。 ## 用語おさらい ### セッション(Session) SQLAlchemy の Session オブジェクトは、ORM マッピングされたオブジェクトの永続化に関する操作を管理するオブジェクトです。 `sqlalchemy.orm.Session` を直接インスタンス化しても良いですが、実環境では sessionmaker を使うことが一般的です。sessionmaker は
2023年3月6日
前回の記事を書くときに WebAssembly でブログのコードブロックのコードを実行させられたら面白いかも、ということで PyScript を使って実装してみました。React & Next.js で使う際の注意点についても書こうと思います。 以下については前提知識としてこの記事では解説しません。 * PyScript * Pyodide * WebAssembly * react-markdown のコードブロック(バッククォート3つ \```)をカスタマイズする方法 ## やったこと * r
2023年3月4日
Python 公式ドキュメントの unittest.mock のページにドンピシャの内容が書いてありますが、なかなか気づけずにハマってしまっていたのでメモです。 `unittest.mock.patch` でパッチしたけど当たってない気がする人は参考にしてみてください。 下記の引用に要点が凝縮されています。 > ### どこにパッチするか > > `patch()` は (一時的に) ある 名前 が参照しているオブジェクトを別のものに変更することで適用されます。任意のオブジェクトには、それを参照する