【python トピック】今週の人気記事TOP5!(2025/4/20 更新)
【2025/4/20】集計 新着週間Like数 ランキング Top5
uv on Docker をやっている
本記事は、uv
(Pythonパッケージ管理ツール) をDocker上で利用するためのDockerfileとdocker-compose
の設定例を示す。ghcr.io/astral-sh/uv
イメージを利用し、uv sync
コマンドで依存関係をインストール。UV_COMPILE_BYTECODE=1
でバイトコードコンパイルによる高速化を実現。docker compose watch
でファイル変更を監視し自動ビルドを行う。Dependabot
によるuv.lock
を使った依存関係管理も解説。マルチステージビルドによる本番環境向け軽量化も提案している。 ソースコードはGitHubリポジトリ(https://github.com/shunsock/uv_on_docker_playground)で公開。
FastAPIで始めるMCPサーバー
FastAPI-MCPライブラリを用いたFastAPIアプリケーションのMCPサーバー化手順を紹介。uvを用いた環境構築後、TinyDBをデータベースとしたシンプルなCRUD APIを実装。fastapi_mcp
ライブラリを用いて既存APIをMCPサーバーとして容易に拡張し、Claude Desktopと連携して動作確認を行った。FastAPIに慣れた開発者にとって、学習コストの低いMCPサーバー構築手法として有効である。
Dify プラグインの仕組みについて調べてみた
Dify v1で導入されたプラグイン機能は、標準機能では不可能だった処理や外部サービス連携を容易にする。Python(Goは今後対応予定)で記述されたプラグインはパッケージ化(.difypkg)されインストールされる。ローカル、デバッグ、サーバレスの3種類のランタイムが提供され、特にサーバレスランタイムはAWS Lambda等を活用し、リソース監視やセキュリティ面での課題を軽減する。OSS依存による保守・セキュリティリスクは存在するものの、開発工数削減や機能拡張の柔軟性からメリットが大きいと結論付けられる。
何もわからんけど作ってみる、なんちゃってAIエージェント
GoとPythonを用い、Next.jsフロントエンド、OpenAI Agents SDK、FastAPI、Model Context Protocol(MCP)サーバーを組み合わせたAIエージェントを開発。 既存プロジェクト管理アプリ「KANNA」の劣化版を構築し、案件作成、一覧、編集、削除をAIで制御する機能を実装。 MCPサーバーはGoで、エージェントはPythonで記述。 FastAPIがフロントエンドからのリクエストを受け付け、Vercel AI SDKを活用したチャットUIを提供。 本開発で、AI SDKの容易性と、プロダクトへの組み込みにおける課題(エラーハンドリング、Guardrailsなど)を確認した。
SaaSにおけるIdP実装の抽象化とDI活用による柔軟な設計
本記事は、SaaSにおけるIdP(Identity Provider)実装の抽象化とDI(Dependency Injection)活用による柔軟な設計について述べている。 従来の条件分岐による実装は保守性・拡張性に劣るため、共通インターフェースIdPHandler
を定義し、環境変数でIdP(Auth0, Keycloakなど)を切り替えるDI機構を構築。これにより、新しいIdP追加時のコード変更を最小限に抑え、テスト容易性、可読性、実行速度の向上を実現した。ただし、オーバーエンジニアリングやチーム内での設計共有の重要性も指摘している。
【2025/4/13】集計 新着週間Like数 ランキング Top5
MCP入門
Model Context Protocol (MCP)は、AIアシスタントが外部データやツールにアクセスするための標準プロトコルです。JSON-RPC 2.0を共通言語に、ホスト、クライアント、サーバの3層アーキテクチャで構成され、LINEのようなマルチチャット構造を実現します。 クライアントはサーバと1対1で通信し、ホストはそれらを管理、AIモデルと連携します。標準トランスポートはStreamable HTTPで、サーバは単機能に特化、容易な拡張性を提供します。Python SDKも提供され、シンプルに実装可能です。
TypeScript以外が嫌いです
筆者はTypeScript原理主義者として、静的型付け、優れた開発環境、豊富なライブラリを理由にTypeScriptを絶賛。Java、Python、Go、Rustなど他の言語の欠点(型安全性の低さ、冗長さ、エラー処理の複雑さなど)を指摘し、TypeScriptの汎用性と利便性を強調している。結論として、TypeScriptへの移行を強く推奨しているが、記事はユーモラスな表現で書かれている点に注意。
ChatGPT と外部サービスを接続する GPTs 開発ガイド
この記事は、ChatGPTのGPTsに外部サービスを接続する新機能「GPT Actions」の開発ガイドです。GPT Actionsは、OpenAPI形式で定義されたWeb APIをGPTsに接続することで、ChatGPTと既存システムの連携を容易にします。Python、TypeScript/Node.jsの具体的な実装例と、認証(Basic認証、APIキー、OAuth)の追加方法が解説されています。Cloudflare Tunnelを使ったローカル開発環境の公開方法も紹介しており、既存システムとの連携によるChatGPT拡張を容易にすることを目的としています。
GoogleアカウントでログインできるStreamlitアプリの開発方法と仕組みをわかりやすく解説
本記事は、Streamlitを用いたGoogleアカウントログイン機能の実装方法を解説する。OpenID Connect(OIDC)プロトコルとst.login()
、st.logout()
、st.experimental_user
関数を使用し、secrets.toml
にクライアントID、シークレット、リダイレクトURIなどを設定する。StreamlitはCORS、XSRF保護を自動化し、セキュリティを強化。シンプルなコードでGoogle認証を実装でき、ユーザー登録/パスワード管理は不要となる。 requirements.txt
で必要なライブラリをインストール後、streamlit run streamlit_app.py
で実行可能。
Pythonのrandom.random()を完全に予測してみた
Pythonのrandom.random()
関数は、Mersenne Twisterアルゴリズムを使用しており、暗号論的には安全ではない。本記事では、Linux環境において、random.random()
の内部状態(/proc/[pid]/mem)を外部プロセスから読み取ることで、次の乱数値を完全に予測することに成功した実験結果を示している。C言語で記述されたmt_predictor
プログラムを用いて、Pythonプロセスのメモリ領域をスキャンし、Mersenne Twisterの状態を復元、次の乱数値を計算している。ただし、random.random()
を既に呼び出している場合や、複雑なプログラム、macOS環境などでは予測が困難となる。セキュリティ目的にはsecrets
モジュールを使用すべきである。
【2025/4/6】集計 新着週間Like数 ランキング Top5
Pythonの環境をuvへ移行する方法
記事は、Python開発環境をMiniForgeからuv
に移行した経験を記述。uv
への移行はcurl -LsSf https://astral.sh/uv/install.sh | sh
で実行可能だが、PATH設定が必要な場合がある。uv sync
で仮想環境構築、uv venv
で新規作成、uv pip install -r requirements.txt
で依存関係をインストールする。uv
は環境構築が高速で、特にrequirements.txt
のみ必要な場合は便利。AIアシストによる環境構築も有効活用されている。結論として、uv
は環境構築の速度とMCPとの親和性が高く、Docker以外のGPU利用以外では推奨される。
【Python × Langchain × Gemini】AI Agent の関数実行を試してみた
LangchainとGeminiを用いたAI Agentによる関数実行を試行。OpenAIのOPENAI_FUNCTIONS AgentはGeminiで使用不可だったため、ZERO_SHOT_REACT_DESCRIPTION Agentを使用。天気情報を取得し、SQLite DBに保存するAgentを作成。get_weather
関数で天気を取得し、save_to_db
関数でDB保存。ZERO_SHOT_REACT_DESCRIPTION
Agentが関数呼び出しを実現し、GeminiでAI Agentの機能を実装可能であることを確認した。
SNS作ったけど、公開できなかった
フルスタックエンジニア(経験5-10年)が、独自開発したSNSを公開しなかった理由を要約します。
Python(バックエンド)、PostgreSQL(DB)、TypeScript(フロントエンド)、AWSインフラを用いた本格的なSNSを開発。 SSR、データベースのリーダー/ライター分離、画像処理分離、フレキシブルデザイン、匿名投稿機能などを実装。 しかし、UIの未完成さ、マネタイズ困難性、Webアプリ市場の成熟度を考慮し、クオリティ不足と判断、公開を見送った。 YAMLによるインフラ再現性の高い構成が特徴。
[Python]Google AI Studio + Code Execution + Gemini 2.5 Proで遊んでみた(PIL)
Google AI StudioとGemini 2.5 Proを用いたPythonコード実行環境で、画像編集を試行。曖昧なプロンプトでもGeminiがPIL(Pillow)とMatplotlibを用いたコードを生成し、画像のグレースケール変換、スクリーントーン化、吹き出し追加、カラーバランス調整などを実現した。ただし、コード生成の安定性や画像保存、表示の不確定性、無料枠の制限といった課題も残る。 Matplotlibと組み合わせることでPillowによる画像表示の成功率向上を確認。画像編集ソフトウェアに頼らないAIによる画像処理の可能性を示唆する一方、現状は手軽な実験環境という位置付けである。
Supabase×Pythonで爆速RAG構築する
SupabaseとPythonを用いた低コストRAG構築手法を紹介。Supabaseの無料プラン(500MB)を利用し、OpenAIのembedding APIとPostgresのベクトル拡張機能を組み合わせることで、LangChain不要でRAGを実装。 SQL関数(rpcメソッド)でコサイン類似度によるベクトル検索を実現。 コードはSupabase固有部分を分離し、他のベクトルDBへの移行容易性を考慮した設計になっている。
【2025/3/30】集計 新着週間Like数 ランキング Top5
Ruffに搭載される新しい型チェッカーRed-knotについて
Astral社が開発中のPython向け型チェッカーRed-knotは、Rustで実装され、Ruffとデータ構造を共有することで高速なフォーマット、lint、静的解析を実現する。既存チェッカーより高速なパフォーマンスを目指し、salsaによるオンデマンド計算を採用。独自のIntersection typeなど、型推論を強化する独自機能も備える。mypy/pyrightとの完全な置換は目指さないものの、移行コストは低いとされる。主要な構文解析、型検査などは既に実装済みで、数年以内(2025年内を目指す)のリリース予定。現在、red_knot check
コマンドで利用可能。
特徴量を言語を越えて一貫して管理する, 『特徴量ドリブン』な MLOps の実現への試み
Mixiのminimoは、特徴量の一貫性管理と自動化による「特徴量ドリブンなMLOps」を実現した。Python/Go/BigQuery等、複数言語・システムに渡る特徴量管理を自動化することで、モデルの再現性、保守性、可視性を向上させた。具体的には、学習時のDataFrameから特徴量リストを生成し、それを基にPython推論サーバのOpenAPI定義とGoサーバのデータモデルを自動生成するフローを構築。これにより、モデル改善サイクルの高速化と品質保証を実現した。
「gpt-4o-transcribe」、「gpt-4o-mini-transcribe」、「gpt-4o-mini-tts」について
OpenAIが3つの新しい音声AIモデル「gpt-4o-transcribe」「gpt-4o-mini-transcribe」「gpt-4o-mini-tts」をリリース。Whisperモデルより高精度で、100以上の言語に対応する。特に「gpt-4o-transcribe」と「gpt-4o-mini-transcribe」はリアルタイム処理に強く、ノイズに強い音声文字起こしを実現。一方「gpt-4o-mini-tts」は自然でカスタマイズ可能な音声生成が可能。現状Azure OpenAI上でのデプロイは不可。各モデルの料金は公開されており、mini版はコストパフォーマンスに優れる。 実証実験では、高精度な文字起こしが確認されたものの、長時間音声では途中切れる課題が見られた。
FastAPIの非同期処理と並行処理の使い分け
FastAPIのパフォーマンスチューニングにおいて、非同期処理(async def)と並行処理(def)の使い分けは重要です。FastAPIはマルチスレッドで動作するため、def
を用いた並行処理が基本推奨されます。しかし、サードパーティライブラリが非同期対応(await)していれば、async def
で非同期処理を用いることでI/O待ち時間を有効活用できます。await非対応ライブラリを使用する場合はdef
を使用すべきです。 OpenAI等の非同期クライアントを使う場合などはasync def
が有効です。 ライブラリの非同期対応状況を十分確認する必要があります。
最新のTracking技術を比較!YOLO-Tracking と SAMURAI の違い
YOLO-TrackingとSAMURAIの物体追跡技術を比較した結果、YOLO-Trackingは高速だが精度がやや低く、SAMURAIは高精度でRe-Identificationも可能だが処理速度が遅いことが判明した。SAMURAIはZero-shot能力を持ち、形状変化にも強いが、実装には追加作業が必要で難易度が高い。プロジェクトの要件(速度重視か精度重視か)に応じて最適な技術を選択する必要がある。 特にZero-shotでの物体認識は、対象によっては精度が低いことを確認した。
【2025/3/23】集計 新着週間Like数 ランキング Top5
npm感覚でPython環境を構築!非PythonエンジニアがuvでPythonプロジェクト(Talk to the City)を動かす
Node.jsエンジニアがPythonプロジェクト(Talk to the City)実行にあたり、requirements.txt
の依存関係解決と実行環境構築の困難さを経験。DevContainer
使用も、古くなった依存関係によりImportError
発生。そこでuv
というPythonパッケージマネージャーを利用。uv
はnpm
のようにpyproject.toml
で依存関係を管理し、uv sync
で環境構築、uv run
で実行可能にする。requirements.txt
からuv
への移行、Pythonバージョン変更(3.10→3.9)を経て、langchain-community
とnltk
追加で最終的に実行成功。uv
はPython環境構築の効率化に有効と結論づけた。
OpenManusでGemma3使ってみた
Windows環境で、軽量ローカルLLM Gemma3 12BとオープンソースエージェントシステムOpenManusを連携させた。Gemma3はLM Studioで実行し、API経由でOpenManusから呼び出した。OpenManusはWebUI付きのフォーク版を使用。設定ファイル修正後、OpenManusでローカルLLMに関する情報をまとめるタスクを実行。Google検索なども行い、結果をテキストファイルに出力したが、期待通りの結果とはならなかった。今後、更なる検証が必要。
GBDT系モデルで生存予測分析
Kaggleコンペ「CIBMTR」における生存予測分析をGBDT系モデルで解く手法を紹介。ベースライン手法として、Kaplan-Meier法を用いたターゲット変換による回帰への落とし込み、XGBoost/CatBoostの生存予測用目的関数(Cox比例ハザードモデル、AFTモデル)の利用が有効。上位ソリューションでは、イベント発生確率の二値分類と生存期間の回帰を組み合わせる手法が用いられ、両者の積で最終予測値を得ていた。回帰への変換はGBDT系モデル以外でも応用可能である。
Streamlit in Snowflake (SiS) と Cortex AI で実現するフロー図自動作成アプリ
Snowflake, Streamlit, Cortex AI, Graphvizを用いたフロー図自動作成アプリが開発された。Streamlit in Snowflake上で動作し、GUIによるノード・エッジ編集、テンプレート利用、DOTコード直接入力に加え、Cortex AIのLLM機能による自然言語からの図表自動生成が可能。 Graphvizによる視覚化と自動レイアウトが図表品質を向上させる。現状はPart1であり、今後の改善が期待される。
【Python】可変長引数(*args, **kwargs)の使い方
Pythonの可変長引数*args
と**kwargs
は、引数の数が可変の関数を定義する際に使用する。*args
はタプルとして複数の位置引数を、**kwargs
は辞書として複数のキーワード引数を扱う。両方を組み合わせることで、柔軟性の高い関数を構築できる。*args
は位置引数、**kwargs
はキーワード引数として関数内で利用され、それぞれタプルと辞書としてアクセスできる。 実例として、演算の種類や表示方法を指定できる柔軟な計算関数が示されている。
【2025/3/16】集計 新着週間Like数 ランキング Top5
コードを書いてから論文が出版されるまで
スケールフリーネットワークのノード削除・追加をシミュレートするC++コードと、解析スクリプト、データ、gnuplotを用いた図生成スクリプトを公開。Pythonコードを高速化するためC++で書き直され、パラメータ管理には独自フォーマットのシングルヘッダーライブラリを使用。並列計算には自作ツールcpsを用い、スパコンでの実行を容易にした。データは論文執筆用リポジトリに複製・管理。本稿は、一度限りのコード公開における開発・データ整理方法を示し、研究開始時の参考となることを目指す。
OpenAI Responses API と Agents SDK リリースのまとめ
OpenAIは、エージェント開発向けにResponses APIとAgents SDKをリリースした。Responses APIはChat Completionsの上位互換で、会話状態の管理、PDFファイル参照、組み込みツール(Web検索、ファイル検索、コンピュータ操作)の利用を可能にする。Agents SDKは、Responses APIを利用し、マルチエージェントのオーケストレーションやトレーシング機能を提供する。 今後Code Interpreterも提供予定。Python版SDKが公開され、Node.js版も予定されている。 全ての機能は、統合されたオブザーバビリティツールで監視可能。
スプレッドシートをバックエンドにした社内データアプリ構築方法
Googleスプレッドシートをバックエンドとした社内データアプリ構築手法として、コードベース(Streamlit, Evidence, Morph)、ローコード、ノーコードの3種類を比較。AI機能との親和性ではコードベースが最も高く、特にStreamlitとMorphはPythonベースで柔軟な開発が可能。ローコードは既存API利用で限定的なAI機能実装、ノーコードはAI機能のカスタマイズが困難。シンプルなアプリはノーコード/ローコードが、AI活用や複雑な機能が必要なアプリはコードベースが適しており、StreamlitやMorphが推奨される。
OpenAI Agents SDKの7つのインターフェイスをコード分析で理解する
OpenAI Agents SDKは、AIエージェント開発支援Pythonライブラリで、7つのインターフェース(Agent, Tool, Guardrail, Handoff, Model, Runner, Trace)を提供する。Agentはタスク実行、Toolは機能モジュール、Guardrailは入出力検証、Handoffはエージェント間タスク委譲、ModelはLLMとの通信、Runnerは実行ワークフロー制御、Traceは実行ログ記録を担う。特にHandoffとGuardrailは、複数エージェント連携と安全な実行を支える独自の概念である。 コード分析により、これらのインターフェースの内部構造と連携が明らかになった。
LLM APIでのOCRの精度を向上するためのPythonライブラリ 3選 + Tips
生成AIを用いたOCRは柔軟なフォーマットに対応できるが、精度向上にはデータ前処理が重要。本記事では、PythonのPillow(トリミング)、OpenCV(コントラスト調整)、pytesseract(OCR)ライブラリを用いた前処理手法を紹介。 さらに、Azure Vision AIとの連携による精度向上も示唆。これらの手法により、生成AIを活用した高精度OCRの実現が可能となる。
【2025/3/9】集計 新着週間Like数 ランキング Top5
動的なサイトもスクレピングできる【Scrapy-Playwright】
本記事は、Scrapy-Playwrightを用いた動的ウェブサイトのスクレイピング手法を紹介する。ScrapyはPython製のスクレイピングフレームワークだが、静的サイトしか扱えない。Scrapy-PlaywrightはPlaywright(E2Eテスト自動化フレームワーク)とScrapyを統合することで、JavaScriptで動的に生成されるコンテンツを含むウェブサイトからのデータ取得を可能にする。 記事では具体的なコード例と実行結果を示し、Scrapyのみでは取得できなかったデータがScrapy-Playwrightを用いることで取得できたことを確認している。ただし、メモリ消費量が増加することに注意が必要。
「chakoshi」とLINE botを連携してみる
この記事は、NTTコミュニケーションズの有害性判定API「chakoshi」をLINE Botに統合する手順を解説しています。GAS(Google Apps Script)でLINE Botを作成し、ユーザー発言をngrok経由でPython Flaskサーバーに転送。サーバーはchakoshi APIを呼び出し、判定結果をGASに返し、安全な発言にはChatGPTで応答、有害な発言には警告メッセージを返す仕組みです。GASとPython、chakoshi API、ngrok、ChatGPT APIを用いた連携システム構築と、その動作確認結果が示されています。
Webアプリケーションにおけるデータ保存戦略:フロントエンド、バックエンド、セッションの選択ガイド
本記事は、PythonバックエンドのWebアプリケーションにおけるデータ保存戦略を解説。フロントエンド、バックエンドDB、セッションの3つの選択肢を比較し、それぞれの特徴(永続性、容量、速度、セキュリティなど)とユースケースを示す。バックエンドDBにはSQLAlchemyを用いたORMによる効率的なデータベース操作を、セッション管理にはFlask、Django、FastAPIとJWTの例を紹介。フロントエンドではlocalStorage、sessionStorage、IndexedDBなどを活用する方法を示し、Next.jsとTypeScriptを用いた例も提示している。 最終的に、サンプルアプリを通じて、データの保存場所の選定と各技術の連携を実践的に学ぶことを提案している。
Pythonで定数を扱う方法 (mypy無し版)
mypy非使用環境でのPython定数実装について、dataclass、Enum、__setattr__
を用いた3手法を比較検証。dataclassとEnumはfrozen=True
、Enum
の特性により再代入を防止。__setattr__
は特殊メソッドで再代入を検知しTypeError
を発生させる。__slots__
とproperty
は迂回可能のため非推奨。 dataclassとEnumが簡潔で推奨されるが、依存性を避けたい場合は__setattr__
が有効。
CoeFontの機械学習推論を支える技術
CoeFontの機械学習推論システムは、FastAPIの非同期処理とServer Sent Eventを用いて推論結果を迅速に提供する。 中間層を削減し、JWS認証による高速化も実現している。信頼性向上のため、SentryとDatadogによるモニタリング、SLO/SLIに基づく運用、AWS WAFなどによるセキュリティ対策を実施。 リクエスト文字数も考慮したスケーリング戦略で、パフォーマンスと安定性を高めている。 これらのMLOps施策により、サービス品質の大幅な改善に成功した。
【2025/3/2】集計 新着週間Like数 ランキング Top5
LangGraph : LangMemによる記憶管理の基本
LangMemは、LangGraphのLLMエージェント用長期記憶管理ライブラリ。create_memory_manager
とcreate_memory_store_manager
の2つのAPIを提供し、前者は独立したメモリ管理、後者はLangGraphのStoreと連携した永続化を実現する。 create_manage_memory_tool
とcreate_search_memory_tool
はエージェントと連携し、記憶の管理・検索を容易にする。さらに、create_prompt_optimizer
APIは過去の会話からプロンプトを最適化する。 これらの機能により、LLMの精度向上に貢献する。
【学習ログ】スクレイピングの始め方
Pythonを用いたWebスクレイピングの実装例を紹介。requests
とBeautifulSoup
ライブラリを使い、書籍情報サイトから書籍名と価格を抽出。robots.txt
確認、利用規約遵守、過剰リクエスト回避、API利用優先といったスクレイピングのルールと注意点も解説。練習サイトからのデータ取得に成功し、今後のデータ分析への応用を展望している。
Langchain公式の Open Deep Research を触ってみる
LangChainが公開したOpen Deep Researchは、LangGraphを用いたオープンソースのDeep Research実装である。プランナー、検索モジュール、ライターからなるワークフローで、Web検索を用いて詳細なレポートを作成する。OpenAIやGoogleのDeep Researchと異なり、LangGraph Studioでグラフを可視化・実行できる。 複数のAPIキー設定が必要だが、動作確認済み。Gemini、ChatGPTのDeep Researchと比較し、情報収集速度や分析深度に違いがあることが結論付けられた。 今後の課題として、情報の信頼性とプライバシーの懸念が挙げられる。
チートシート②正規表現で扱う文字パターン35選!
記事は、日付、メールアドレス、URL、HTMLタグ、電話番号、郵便番号など35種類の文字列パターンと、それぞれの正規表現例を紹介している。 正規表現は、日付のISO形式や米国形式、メールアドレスのローカル部とドメイン部、URLのプロトコル、HTMLタグの開始・終了タグ、電話番号の国際形式など、様々なパターンに対応できる。 その他、ISBN、MACアドレス、IPv4/IPv6アドレス、クレジットカード番号、マイナンバーなども網羅している。これら正規表現を活用することで、文字列の検証や抽出を効率化できる。
ローカルのPDFファイルを引用して回答してくれるエージェントを作った
ローカルPDFファイルを引用して回答するエージェントをPythonとClaudeを用いて開発した。 このエージェントは、指定フォルダ内のPDFを質問の関連性でソートし、ClaudeのCitation機能を用いて引用付き回答を生成する。FastMCPサーバーとして実装されており、Claude Desktop等から利用可能。回答精度は自動評価され、閾値を超えると処理を終了することでトークン消費を抑える。 現状の課題はトークン消費量とページ数表示の精度向上だが、医療関連文書等の参照に有効なツールである。
【2025/2/23】集計 新着週間Like数 ランキング Top5
AI Podcast:HackerVoiceのリリース, その裏側
HackerNewsのトレンドをAIで自動生成するPodcast「HackerVoice」をリリース。Next.js、Python、TypeScript、Gemini、OpenAI TTS等を使用し、HackerNews APIからデータを取得、Geminiで原稿生成、音声合成後、Cloudflare R2に保存、VercelとGitHub Actionsで自動配信する仕組みを構築。Spotify、Apple Podcasts、RSSに対応。低コスト(1話20-30円)で実現。今後の展望として、LLMによる原稿チューニング、情報源の多様化、パーソナライズ機能の追加を予定。
OpenAI APIで複数の人格と対話してみた
OpenAI APIのname
フィールドを用いて、チャットボットに複数の人格を設定し、会話させる方法を紹介。role
フィールドと併用することで、異なる人格間の識別や、各人格への個別質問が可能になる。name
フィールドには英数字とアンダースコア、ハイフンのみ使用可能だが、日本語名はcontent
で指定することで対応できる。 複数の人格を持つAIによる会話や、ユーザー名と発言履歴を紐付けるアプリケーション開発に役立つ。ただし、レスポンスにはname
が含まれないため、クライアント側での管理が必要。
第3回金融データ活用チャレンジ奮闘記 〜PDFの読み取りが得意なLLM探しとローカルOpenSearchによるハイブリッド検索〜
SIGNATEの第3回金融データ活用チャレンジ(参加者1544名)で49位となった筆者は、RAGシステム構築において、複数LLMのハイブリッド検索を用いた解法を採用した。GeminiとClaudeを組み合わせ、Geminiでテキスト、Claudeで表・グラフのPDF文字起こしを行いコスト効率を高めた。OpenSearchを用いたハイブリッド検索では、各チャンクをベクトル化し、会社名フィルタリングと前後ページ参照による精度向上を図り、最終的に生成AIによる回答生成を実現した。
hogefugaせずにダミーデータを作る「Faker」
PythonライブラリFakerを用いたダミーデータ生成についての記事要約です。Fakerは名前、住所、クレジットカード情報など多様なダミーデータを高速に生成でき、日本語を含む多言語に対応します。 Polarsを用いたデータフレーム作成例も示され、1000件の生成に0.8秒と高速であることが確認されました。生成AIと比べ、速度、コスト、再現性の面で優位性があり、開発におけるテストデータ作成の効率化、不適切なデータ使用によるトラブル回避に有効です。
Google Sheetとマークダウンで、ダッシュボード Webアプリを構築する
本記事は、GoogleスプレッドシートのデータをPythonとMorphフレームワーク、Markdownを用いてWebダッシュボードアプリとして可視化する手順を示す。Google Sheet APIでスプレッドシートデータを取得し、Pandasでデータ加工、Plotlyでチャートを作成、MorphでWebアプリとして表示する。Morphの@morph.load_data
アノテーションにより、複数のPython関数の結果を効率的に連携可能。完成したダッシュボードはMorphクラウドにデプロイできる。スプレッドシートデータのリアルタイム反映と安全なデータ共有を実現する。
Discussion