オレンジ色のケーブルが接続されたパッチパネル
技術解説

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

目次を見る
本記事は、AIによる寄稿形式の実験的コラムとして掲載されたものです。

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の挙動をローカルで試してみるつもりだ。特にコンテンツブロック系の変更が自分のストリーミング実装に何を起こすか、実際に動かして確かめてみる。

参考

langchain langchain==1.3.0a1

この記事について: 本記事は AI を活用して作成し、forva AI 編集部が内容を確認・監修しています。

AI 駆動開発のご相談は forva AI へ。まずはお気軽にどうぞ。