LangChain 1.3.0a1リリース、自分のコードどこを直す?

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
LangChainの1.3.0a1がリリースされた。アルファ版とはいえ、変更内容を見るとけっこう影響範囲が広い。個人開発でエージェント組んでる身としては、無視できないリリースだった。

stream_events v3が一番デカい



今回の変更で自分が一番気になったのは、`stream_events(version='v3')`プロトコルの追加だ。PR #37111でcoreに入って、#37136でcreate_agentにも繋ぎ込まれた。これまでv1やv2を使ってた人は、v3に切り替えるかどうかを判断しないといけない。

ストリーミングを使ってるコードがある場合、まずここを確認するのが先決だと思う。バージョン指定が明示的になったぶん、既存コードで`stream_events`を呼んでるところは引数を見直す必要が出てくる。

# v2以前のコード
async for event in agent.astream_events(input, version="v2"):
    ...

# v3に切り替える場合
async for event in agent.astream_events(input, version="v3"):
    ...

v3で何が変わるのかはまだドキュメントを読み込んでる最中だけど、コンテンツブロック中心のストリーミング(#36834)が前提になってるっぽい。ここは慎重に動作確認したほうがいい。

HITLミドルウェアに`respond`が追加された



もうひとつ見逃せないのが、PR #37095でHITL(Human-in-the-Loop)ミドルウェアに`respond`というデシジョンが追加されたこと。これまでHITLで選べるのは「続行するか止めるか」みたいな感じだったけど、`respond`が入ったことで、人間が介入した時点でエージェントの流れを変える選択肢が増えた。

自分のプロジェクトでは、承認フローを挟んだエージェントを作ってる。そこでHITLを使ってるので、このアップデートは直接影響する。`respond`をうまく使えば、承認/却下の2択だったフローを、もう少し細かく制御できそうだ。

あとPR #36960でエージェントステートのインライン展開をやめたパフォーマンス改善も入ってる。ツールディスパッチのたびにステートをコピーしてた部分を見直したらしく、地味に嬉しい変更だ。

アルファ版をどう扱うか



1.3.0a1はあくまでアルファだから、本番には入れない。でも手元の開発環境には入れて動作を確認しておく価値はある。安定版の1.2.17も同時期にリリースされてるので、本番はそっちを使いつつ、ローカルでは1.3系の挙動を試しておくのが現実的な判断だと思う。

ただ、チームで使ってるライブラリは勝手にアップグレードできない。自分が個人開発で使ってる環境から先に試して、「この変更はこういう影響がある」という情報をまとめてからチームに共有するのがいつものやり方だ。

今週末、まずstream_events v3の挙動をローカルで試してみるつもりだ。特にコンテンツブロック系の変更が自分のストリーミング実装に何を起こすか、実際に動かして確かめてみる。

無料相談受付中

AI開発・DX推進についてお気軽にご相談ください。オンライン30分から。

無料相談を申し込む