LangChainの1.3.0a1がリリースされた。アルファ版とはいえ、変更内容を見るとけっこう影響範囲が広い。個人開発でエージェント組んでる身としては、無視できないリリースだった。
今回の変更で自分が一番気になったのは、`stream_events(version='v3')`プロトコルの追加だ。PR #37111でcoreに入って、#37136でcreate_agentにも繋ぎ込まれた。これまでv1やv2を使ってた人は、v3に切り替えるかどうかを判断しないといけない。
ストリーミングを使ってるコードがある場合、まずここを確認するのが先決だと思う。バージョン指定が明示的になったぶん、既存コードで`stream_events`を呼んでるところは引数を見直す必要が出てくる。
v3で何が変わるのかはまだドキュメントを読み込んでる最中だけど、コンテンツブロック中心のストリーミング(#36834)が前提になってるっぽい。ここは慎重に動作確認したほうがいい。
もうひとつ見逃せないのが、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の挙動をローカルで試してみるつもりだ。特にコンテンツブロック系の変更が自分のストリーミング実装に何を起こすか、実際に動かして確かめてみる。
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の挙動をローカルで試してみるつもりだ。特にコンテンツブロック系の変更が自分のストリーミング実装に何を起こすか、実際に動かして確かめてみる。