Vercel AI SDKの`[email protected]`のリリースノートを流し読みしていたら、地味に気になるアップデートがあった。
`rerank()`関数が、`RerankingModel`オブジェクトだけでなく、プレーンな文字列のモデルIDを受け取れるようになった。リリースノートには`'cohere/rerank-v3.5'`という具体例が載っていて、これを見た瞬間に「あ、generateTextとかembedと同じ書き方ができるようになったのか」と腑に落ちた。
これまで自分のコードでは、`generateText`では`'openai/gpt-4o'`みたいに文字列でサクッと書けていたのに、`rerank()`だけ`RerankingModel`オブジェクトを生成してから渡す必要があった。API的に一貫性がなくて、「なんでここだけ違うんだろう」とうっすら思いながらそのまま使ってた。今回のパッチで、その気持ち悪さがなくなった感じがする。
変更前のコードはこんなイメージだった。
今後は`generateText`と同じノリで、こう書ける。
コード量としてはほんの数文字の差だけど、チームで使うときの認知コストが下がる。
自分が今触っているRAGのパイプラインでは、retrieval後にrerankを挟んでいる。そこで`cohere.reranking()`を呼んでいる箇所がいくつかある。今すぐ壊れるわけじゃないし、既存の書き方は引き続き動く。ただ、新しく書くコードは文字列スタイルに統一したほうが後から読みやすい。
チームの他のメンバーが`generateText`のコードを読んでから`rerank()`のコードを見ると、「なぜここだけ書き方が違うんだ」と混乱することがある。コードレビューで指摘するのも若干面倒だった。今後は「モデルIDは文字列で渡す」というルールに統一できる。
こういう地味な一貫性の改善って、大きな機能追加より長期的にはコードベースの健康に効いてくると思う。パッチバージョンのリリースに含まれているあたりも、「小さいけど確実に改善」という判断が透けて見えて好感が持てる。
今回の変更はPatch Changesという扱いで、コミットIDは`f152133`。Breaking Changeではないので、既存コードをすぐ直す必要はない。ただ、新しくrerankingを実装する箇所があれば、迷わず文字列スタイルで書いていくつもりだ。
rerank()に文字列でモデルIDを渡せるようになった
`rerank()`関数が、`RerankingModel`オブジェクトだけでなく、プレーンな文字列のモデルIDを受け取れるようになった。リリースノートには`'cohere/rerank-v3.5'`という具体例が載っていて、これを見た瞬間に「あ、generateTextとかembedと同じ書き方ができるようになったのか」と腑に落ちた。
これまで自分のコードでは、`generateText`では`'openai/gpt-4o'`みたいに文字列でサクッと書けていたのに、`rerank()`だけ`RerankingModel`オブジェクトを生成してから渡す必要があった。API的に一貫性がなくて、「なんでここだけ違うんだろう」とうっすら思いながらそのまま使ってた。今回のパッチで、その気持ち悪さがなくなった感じがする。
変更前のコードはこんなイメージだった。
import { cohere } from '@ai-sdk/cohere';
const results = await rerank({
model: cohere.reranking('rerank-v3.5'),
values: documents,
query: 'some query',
});今後は`generateText`と同じノリで、こう書ける。
const results = await rerank({
model: 'cohere/rerank-v3.5',
values: documents,
query: 'some query',
});コード量としてはほんの数文字の差だけど、チームで使うときの認知コストが下がる。
自分のコードのどこを直すか
自分が今触っているRAGのパイプラインでは、retrieval後にrerankを挟んでいる。そこで`cohere.reranking()`を呼んでいる箇所がいくつかある。今すぐ壊れるわけじゃないし、既存の書き方は引き続き動く。ただ、新しく書くコードは文字列スタイルに統一したほうが後から読みやすい。
チームの他のメンバーが`generateText`のコードを読んでから`rerank()`のコードを見ると、「なぜここだけ書き方が違うんだ」と混乱することがある。コードレビューで指摘するのも若干面倒だった。今後は「モデルIDは文字列で渡す」というルールに統一できる。
こういう地味な一貫性の改善って、大きな機能追加より長期的にはコードベースの健康に効いてくると思う。パッチバージョンのリリースに含まれているあたりも、「小さいけど確実に改善」という判断が透けて見えて好感が持てる。
今回の変更はPatch Changesという扱いで、コミットIDは`f152133`。Breaking Changeではないので、既存コードをすぐ直す必要はない。ただ、新しくrerankingを実装する箇所があれば、迷わず文字列スタイルで書いていくつもりだ。