-
-
Notifications
You must be signed in to change notification settings - Fork 143
本番リリース #385
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
…-functionality ドキュメントサイトに検索機能を追加
OPENAI_TTS_KEYにすべきところのtypoを修正
…models 各AIのモデル一覧を一つのファイルにまとめる
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
…tion-voice-stop プリセット質問ボタンクリック時に音声を停止するように修正
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
Co-Authored-By: ニケちゃん / nikechan <o3nike.teg.14@gmail.com>
スライドを停止したときに音声再生を即座に停止させる
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
|
""" WalkthroughREADMEファイル(日本語・英語・中国語・韓国語・ポーランド語)に、GitHubユーザー「teruPP」へのリンクとアバター画像を協力者(スポンサー)一覧に追加しました。他の内容や構造には一切変更がありません。 Changes
Possibly related PRs
Suggested labels
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (1)
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Deploying aituber-kit-docs with
|
| Latest commit: |
45144c2
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://0013f2ea.aituber-kit-4s1.pages.dev |
| Branch Preview URL: | https://develop.aituber-kit-4s1.pages.dev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🔭 Outside diff range comments (1)
src/features/constants/aiModels.ts (1)
1-219: 💡 Verification agent🧩 Analysis chain
AIモデル定義を中央化する新しいファイルの追加
このファイルは、コードベース全体で使用されるAIモデル定義を中央化するという優れたアーキテクチャ判断を示しています。いくつかの観点から確認します:
- 構造化と文書化: 各関数と定数に明確なJSDocコメントがあり、目的とパラメータが記述されています。
- 型安全性: すべてのデータ構造が適切に型付けされており、型エラーを防止します。
- 一貫性: 関数と定数の命名が一貫しており、理解しやすいインターフェイスを提供しています。
- 安全なアクセス: 各ゲッター関数は、データが見つからない場合に空の配列または文字列を返す安全なフォールバックを提供しています。
この変更により、AIモデルの追加や更新が容易になり、コードベース全体で一貫したモデル参照が保証されます。
ただし、将来の拡張性のために以下の点を考慮することをお勧めします:
🌐 Web query:
最新のOpenAI APIモデルのリスト💡 Result:
OpenAIは、2025年5月7日現在、以下の最新AIモデルを提供しています。
GPT-4.1
2025年4月14日にリリースされた最新のAIモデルで、コーディング能力、長文コンテキストの理解、指示の遵守において大幅な改善が見られます。特に、GPT-4oと比較してコーディング性能が21%、GPT-4.5と比較して27%向上しています。また、最大100万トークンのコンテキストウィンドウをサポートし、大規模なデータセットの理解が可能です。 (reuters.com)GPT-4.5
2025年2月27日に発表された大規模かつ高性能なモデルで、教師なし学習により幅広い知識と深い世界理解を備えています。ハルシネーション率が37%と、前モデルのGPT-4oの約60%から大幅に低減しています。ただし、非常に大きなモデルであるため、運用コストが高く、API経由でのアクセスには注意が必要です。 (ft.com)o3
2024年12月20日に発表された推論能力に特化したモデルで、複雑な問題解決に優れています。特に、コーディング、数学、科学的推論の分野で顕著な性能向上が見られます。また、GPT-4oと比較して、CodeforcesのEloスコアが2727と高い評価を受けています。 (en.wikipedia.org)o4-mini
2025年4月16日にリリースされた新しい推論モデルで、テキストと画像の両方を処理できます。特に、ホワイトボードのスケッチ分析などの視覚的なタスクに対応可能です。また、GPT-5への統合を前提として開発されており、今後のアップデートが期待されます。 (en.wikipedia.org)text-embedding-3-small
新しい埋め込みモデルで、前世代のモデルよりも大幅に効率化されています。料金も低く設定されており、開発者にとってコストパフォーマンスが高い選択肢となっています。 (openai.com)これらのモデルは、OpenAIのAPIを通じて利用可能であり、各モデルの特性や料金体系を考慮して、適切なモデルを選択することが重要です。
Citations:
- 1: https://www.reuters.com/technology/artificial-intelligence/openai-launches-new-gpt-41-models-with-improved-coding-long-context-2025-04-14/?utm_source=openai
- 2: https://www.ft.com/content/117ec9b2-745d-4c37-bfc4-6e545a7d3ac1?utm_source=openai
- 3: https://en.wikipedia.org/wiki/OpenAI_o3?utm_source=openai
- 4: https://en.wikipedia.org/wiki/OpenAI_o4-mini?utm_source=openai
- 5: https://openai.com/ja-JP/index/new-embedding-models-and-api-updates/?utm_source=openai
OpenAI新モデルの追加検討
Web検索(2025年5月7日時点)により、以下の最新モデルが公開されていることが分かりました:
- o3 (推論特化モデル)¹
- o4-mini (テキスト+画像対応の軽量推論モデル)³
- text-embedding-3-small (新埋め込みモデル)⁵
これらを踏まえ、将来の拡張性とAPI互換性を確保するため、以下の修正をお願いします:
• src/features/constants/aiModels.ts の
openai配列に
- 'o3'
- 'o4-mini'
を追加検討
• 同ファイルに埋め込みモデル用の定数(例:openAIEmbeddingModels)を新設し、- 'text-embedding-3-small'
を管理
• 必要に応じてgetModelsや専用のゲッター関数を追加し、一貫したアクセスインターフェイスを提供¹ https://en.wikipedia.org/wiki/OpenAI_o3
³ https://en.wikipedia.org/wiki/OpenAI_o4-mini
⁵ https://openai.com/ja-JP/index/new-embedding-models-and-api-updates/
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (23)
README.md(1 hunks)docs/README_en.md(1 hunks)docs/README_ko.md(1 hunks)docs/README_pl.md(1 hunks)docs/README_zh.md(1 hunks)src/__tests__/features/chat/openAIAudioChat.test.ts(3 hunks)src/components/form.tsx(1 hunks)src/components/presetQuestionButtons.tsx(2 hunks)src/components/settings/modelProvider.tsx(16 hunks)src/components/settings/slideConvert.tsx(3 hunks)src/components/settings/speechInput.tsx(2 hunks)src/components/settings/voice.tsx(2 hunks)src/components/slides.tsx(2 hunks)src/components/useRealtimeAPI.tsx(2 hunks)src/features/chat/handlers.ts(1 hunks)src/features/chat/openAIAudioChat.ts(2 hunks)src/features/constants/aiModels.ts(1 hunks)src/features/constants/settings.ts(3 hunks)src/pages/api/openAITTS.ts(3 hunks)website/document/.vitepress/config.mts(4 hunks)website/document/en/guide/troubleshooting.md(1 hunks)website/document/guide/troubleshooting.md(1 hunks)website/document/zh/guide/troubleshooting.md(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (9)
src/features/chat/openAIAudioChat.ts (1)
src/features/constants/aiModels.ts (1)
defaultModels(98-118)
src/components/slides.tsx (1)
src/features/messages/speakQueue.ts (1)
SpeakQueue(14-224)
src/__tests__/features/chat/openAIAudioChat.test.ts (1)
src/features/constants/aiModels.ts (1)
defaultModels(98-118)
src/components/settings/speechInput.tsx (2)
src/features/constants/settings.ts (1)
WhisperTranscriptionModel(171-171)src/features/constants/aiModels.ts (1)
getOpenAIWhisperModels(204-206)
src/components/settings/voice.tsx (1)
src/features/constants/aiModels.ts (1)
getOpenAITTSModels(216-218)
src/components/presetQuestionButtons.tsx (1)
src/features/messages/speakQueue.ts (1)
SpeakQueue(14-224)
src/components/settings/slideConvert.tsx (1)
src/features/constants/aiModels.ts (2)
getDefaultModel(136-138)getSlideConvertModels(154-156)
src/features/constants/aiModels.ts (1)
src/features/constants/settings.ts (1)
AIService(55-55)
src/features/constants/settings.ts (1)
src/features/constants/aiModels.ts (2)
openAITTSModels(211-211)openAIWhisperModels(195-199)
🪛 LanguageTool
website/document/zh/guide/troubleshooting.md
[uncategorized] ~26-~26: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...o = ++frame;`时发生TypeError。 - 此外,以Cubism 5格式(.moc3 v4)导出的模型与AITuberKit附带的库不兼容。 ### ...
(wa5)
[uncategorized] ~47-~47: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...for Web / Cubism 4.2或更早版本** | 不支持Cubism 5格式(.moc3 v4) | | model...
(wa5)
website/document/en/guide/troubleshooting.md
[style] ~26-~26: Consider using “incompatible” to avoid wordiness.
Context: ...orted in Cubism 5 format (.moc3 v4) are not compatible with the libraries included in AITuberK...
(NOT_ABLE_PREMIUM)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Cloudflare Pages
🔇 Additional comments (45)
docs/README_ko.md (1)
267-269: スポンサー「teruPP」エントリの追加を承認します。
他の言語版と同様に、協力者一覧に正しく反映されています。docs/README_zh.md (1)
267-269: スポンサー「teruPP」エントリの追加を承認します。
既存の「M1RA_A_Project」直後に一貫して挿入されており、表示にも問題ありません。docs/README_pl.md (1)
267-269: スポンサー「teruPP」エントリの追加を承認します。
他のローカライズ版と整合しており、表記も統一されています。docs/README_en.md (1)
267-269: Added sponsor entry for “teruPP” approved.
Inserted immediately after existing contributors, matching other localized READMEs without structural changes.README.md (1)
267-269: スポンサー「teruPP」エントリの追加を承認します。
メインREADMEにも一貫して反映されており、リンク先・画像のパスも問題ありません。website/document/.vitepress/config.mts (4)
70-198: 検索機能の実装が優れています!検索設定の実装が非常に丁寧で、三言語(日本語、英語、中国語)にわたる詳細なUIテキストの翻訳が含まれています。ユーザーエクスペリエンスの向上に大きく貢献する素晴らしい実装です。
289-292: 日本語サイドバーへのトラブルシューティング追加が適切ですトラブルシューティングページへのリンクが適切に追加されています。ユーザーがLive2Dモデルの問題を解決するための重要な導線となります。
388-391: 英語サイドバーへのトラブルシューティング追加が適切です英語版サイドバーにもトラブルシューティングへのリンクが正しく追加されています。多言語対応がしっかりと実装されています。
481-484: 中国語サイドバーへのトラブルシューティング追加が適切です中国語版サイドバーにも「故障排除」リンクが正しく追加されています。国際ユーザーへの配慮が行き届いた実装です。
website/document/en/guide/troubleshooting.md (1)
1-51: 英語版トラブルシューティングガイドの内容が充実していますLive2Dモデルの読み込み時に発生する可能性のあるエラーについて、原因と解決策が明確に説明されています。また、表形式での設定要点まとめは非常に分かりやすいです。技術的な問題の説明と解決方法の両方がバランス良く記載されています。
英語の表現も適切で、開発者とユーザーの両方にとって有益な情報源となるでしょう。
🧰 Tools
🪛 LanguageTool
[style] ~26-~26: Consider using “incompatible” to avoid wordiness.
Context: ...orted in Cubism 5 format (.moc3 v4) are not compatible with the libraries included in AITuberK...(NOT_ABLE_PREMIUM)
website/document/zh/guide/troubleshooting.md (1)
1-51: 中国語版トラブルシューティングガイドも同様に充実しています中国語版のトラブルシューティングガイドも、日本語版および英語版と同様に内容が充実しています。Live2Dモデルのエラーに関する説明と解決策が明確に翻訳されています。中国語のユーザーにとって非常に役立つリソースとなるでしょう。
専門用語の翻訳も適切に行われており、技術的なニュアンスが正確に伝わる内容となっています。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~26-~26: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...o = ++frame;`时发生TypeError。 - 此外,以Cubism 5格式(.moc3 v4)导出的模型与AITuberKit附带的库不兼容。 ### ...(wa5)
[uncategorized] ~47-~47: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...for Web / Cubism 4.2或更早版本** | 不支持Cubism 5格式(.moc3 v4) | | model...(wa5)
website/document/guide/troubleshooting.md (1)
1-51: 日本語版トラブルシューティングガイドの実装が素晴らしいですLive2Dモデル読み込み時のエラーについて、原因と解決策が非常に分かりやすく説明されています。特に「影響するLive2D側の設定早見表」は、ユーザーがすぐに問題を解決できるよう配慮された優れた実装です。
技術的な解説と実践的な対応策のバランスが良く、初心者から上級者まで幅広いユーザーに対応できる内容になっています。マスク生成に関するヒントも実用的で親切な補足となっています。
src/features/chat/handlers.ts (1)
639-640:Details
✅ Verification successful
クエリパラメータの名前変更が適切に実装されています
slideDocsからslideNameへのパラメータ名変更は、コードベース全体での一貫性を高めるための良い変更です。APIエンドポイントの実装側でも同様の変更がされていることを確認してください。APIエンドポイントが
slideNameパラメータを正しく処理できることを確認するために、以下のスクリプトを実行してください:
🏁 Script executed:
#!/bin/bash # APIエンドポイントが新しいパラメータ名を受け付けるか確認 # APIルートファイルを検索 rg -A 10 "getSupplement" --glob "pages/api/*.{js,ts,tsx}"Length of output: 206
以下のスクリプトでリポジトリ全体を対象に再検索し、
getSupplementエンドポイントとslideNameパラメータの実装箇所を確認してください。
🏁 Script executed:
#!/bin/bash # getSupplement エンドポイントを全体検索 echo "🔍 getSupplement の定義を検索" rg -A5 'getSupplement' --glob '*.{js,ts,tsx}' # API 実装内で slideName パラメータを検索 echo "🔍 API 実装内の slideName の参照を検索" rg -n 'slideName' --glob '*.{js,ts,tsx}'Length of output: 4718
APIエンドポイントの
slideNameパラメータ対応を確認しました以下を確認し、問題ないことを検証しました。
pages/api/getSupplement.tsでreq.query.slideNameを文字列チェック・サニタイズした上で利用- 他の関連ファイル(
src/pages/slide-editor/[slideName].tsx、src/features/chat/handlers.ts、src/components/slides.tsxなど)でもslideDocs→slideNameへの変更が一貫して適用これによりクエリパラメータ名の変更はコードベース全体で正しく反映されており、マージ準備完了です。
src/features/chat/openAIAudioChat.ts (2)
13-13: AIモデル定数の一元管理のためのインポートを追加AIモデル名を一元管理するための適切なインポートです。これにより、モデル名の管理が容易になります。
26-26: ハードコードされたモデル名を一元管理された定数に置き換えハードコードされたモデル名を
defaultModels.openaiAudioに置き換えることで、モデル名の一元管理が可能になり、将来的なモデル変更が容易になります。良いリファクタリングです。src/__tests__/features/chat/openAIAudioChat.test.ts (3)
12-12: テストファイルへのAIモデル定数のインポート追加テストでも本番コードと同じモデル定数を使用するための適切なインポートです。
56-56: モックデータでハードコードされた値を定数参照に変更テスト用のモックデータを実装と一致させるための良い変更です。これにより、実装の変更に伴うテストの不整合を防ぐことができます。
193-193: テスト期待値をハードコードから定数参照に修正テストの期待値を実装の変更に合わせて修正しており、適切な対応です。これによりテストの堅牢性が向上します。
src/components/slides.tsx (2)
5-5: 音声キュー制御のためのインポート追加
SpeakQueueクラスのインポート追加は、スライド再生停止時に音声合成を適切に停止するために必要な変更です。
153-156: スライド再生停止時の音声合成停止機能を追加スライド再生が停止された時に音声合成も停止するようにする重要なUX改善です。これにより、ユーザーがスライド再生を停止しても音声が続くという混乱した体験を防ぐことができます。
homeStore.setState({ isSpeaking: false })とSpeakQueue.stopAll()の呼び出しで、音声合成のリソースが適切にクリーンアップされます。src/components/useRealtimeAPI.tsx (2)
9-9: モジュールインポートの追加は適切ですAIモデル定数の集中管理のための
defaultModelsのインポートが追加されました。これは好ましい変更です。
245-246: ハードコードされたモデル文字列の代わりに集中管理された定数を使用ハードコードされたモデル文字列を
defaultModels.openaiRealtimeに置き換えることで、モデル管理が一元化され、将来的なモデル変更が容易になります。これはコードの保守性を向上させる優れた方法です。src/components/settings/speechInput.tsx (2)
8-8: AIモデルユーティリティ関数のインポート追加
getOpenAIWhisperModels関数のインポートにより、Whisperモデルのリストが集中管理されるようになります。これは良い変更です。
48-52: 静的なモデルリストを動的に生成するように改善ハードコードされたWhisperモデルのリストが、集中管理された関数
getOpenAIWhisperModels()を使用して動的に生成されるように変更されました。これにより、アプリケーション全体でモデルリストの一貫性が保たれ、将来的なモデル追加や変更が容易になります。src/components/presetQuestionButtons.tsx (2)
3-4: 必要なモジュールのインポート追加音声制御のために必要な
homeStoreとSpeakQueueのインポートが追加されました。これらは音声再生状態を適切に管理するために必要です。
19-21: プリセット質問選択時の音声停止処理の追加プリセット質問ボタンがクリックされたときに、進行中の音声合成を停止する処理が追加されました。これにより、新しい質問が選択されたときにユーザーエクスペリエンスが向上します。
homeStoreの発話状態を更新し、SpeakQueueを停止することで、クリーンな状態で新しい対話を開始できます。src/components/form.tsx (1)
48-52: スライドテキスト表示の条件論理の改善
SlideTextコンポーネントの表示条件が、slidePlayingとchatProcessingCount !== 0の両方が真である場合のみに限定されるように変更されました。これにより、スライドが実際に再生中で、かつチャット処理が行われている場合にのみスライドテキストが表示されるようになり、UIの一貫性が向上します。src/components/settings/voice.tsx (2)
16-16: モジュール化されたAIモデル定数のインポートが追加されましたAIモデルの一覧を集中管理する
aiModels.tsからOpenAI TTSモデルを取得する関数をインポートしています。これにより、モデルリストの一元管理が可能になり、将来的なモデル追加・削除が簡単になります。
830-834: ハードコードされたモデルリストが動的生成に置き換えられました以前はモデル名が直接コード内に記述されていましたが、
getOpenAITTSModels()関数からモデルリストを取得し、動的に生成するように改善されました。メリット:
- 一箇所でのモデル管理が可能
- 将来的なモデル追加時にこのコンポーネントを修正する必要がなくなる
- モデル名の一貫性が保証される
src/pages/api/openAITTS.ts (3)
4-5: 感情表現を豊かにするモデルリストの導入感情表現の指示を必要とするモデルをリスト形式で定義することで、将来的にモデルが追加された場合も柔軟に対応できるようになりました。
17-17: APIキー取得の優先順位が更新されましたOpenAI TTSに特化した環境変数
OPENAI_TTS_KEYを最初に確認するように変更されました。これにより、TTSと他のOpenAI機能で異なるAPIキーを使用できるようになり、より柔軟な運用が可能になります。
38-38: モデル判定がリスト対応に改善されましたハードコードされた文字列含有チェックから、定義されたモデルリストを使用した柔軟な判定方法に変更されました。これにより、複数の対象モデルに対して一貫した判定ができるようになり、コードの保守性が向上しています。
src/components/settings/slideConvert.tsx (3)
7-10: モデル管理用のユーティリティ関数のインポートが追加されましたスライド変換用のデフォルトモデルとモデルリストを取得するための関数がインポートされました。これにより、AIモデルの一元管理が実現され、コードの整理と保守性の向上につながります。
27-28: デフォルトモデルの取得方法が改善されました以前はサービスごとに条件分岐でデフォルトモデルを設定していましたが、集中管理されたユーティリティ関数
getDefaultModelを使用するように変更されました。これにより、デフォルトモデルの管理が一元化され、コードの可読性と保守性が向上しています。
129-134: モデル選択オプションの生成が動的に改善されましたハードコードされたモデルのリストが、
getSlideConvertModels関数による動的なリスト生成に置き換えられました。これにより:
- 新しいモデルの追加がより簡単になりました
- 異なるAIサービスごとにサポートされるモデルを正確に表示できます
- モデルの一貫性が保証されます
この改善により、将来的なモデルの追加や変更に柔軟に対応できるようになりました。
src/components/settings/modelProvider.tsx (6)
21-26: 集中管理されたモデル定数とユーティリティ関数のインポートが追加されましたAIモデル関連の定数と取得用関数がインポートされ、コンポーネント内でのモデル管理が改善されました。これにより:
- モデルリストの一元管理が可能になりました
- サービスごとのデフォルトモデルを簡単に取得できます
- 各機能(リアルタイム、音声など)に適したモデルを動的に取得できます
29-29: AIService型のインポートが追加されました型定義が共通のモジュールから一貫してインポートされるようになったため、型の一貫性と正確性が向上しました。
128-158: AIサービス変更ハンドラが改善されました
handleAIServiceChange関数が以下のように改善されました:
defaultModelsマッピングを使用してデフォルトモデルを設定- サービスに基づいて適切な機能の有効/無効を制御
- 特定のサービスでのみ利用可能な機能(リアルタイムAPI、音声モードなど)の制限を明確化
この改善により、異なるAIサービス間での移行がよりスムーズになり、互換性のない機能が自動的に無効化されるようになりました。
168-168: デフォルトモデル参照が集中管理に更新されましたハードコードされたデフォルトモデル文字列が、集中管理された
defaultModelsオブジェクトからの参照に置き換えられました。これにより、デフォルトモデルの変更が一箇所で行えるようになり、一貫性が保証されます。Also applies to: 185-185, 189-189
359-363: OpenAIモデルオプションの生成が動的に改善されましたリアルタイムAPI、音声モード、および通常のチャットモードでのOpenAIモデルオプションがそれぞれ
getOpenAIRealtimeModels(),getOpenAIAudioModels(),getModels('openai')を使って動的に生成されるようになりました。これにより、各機能に適したモデルのみが表示され、ユーザーが互換性のないモデルを選択するリスクが低減されました。
Also applies to: 426-430, 448-452
491-495: 各AIサービスのモデルリスト生成が統一されましたAnthropic、Google、Groq、Cohere、MistralAI、Perplexity、Fireworks、DeepSeekなど、すべてのAIサービスでモデルオプションの生成が
getModels(サービス名)関数を使用した統一された方法に変更されました。この改善により:
- コードの重複が削減されました
- 新しいモデルの追加が一箇所で行えるようになりました
- すべてのサービスで一貫した実装が確保されました
Also applies to: 542-546, 728-732, 773-777, 818-822, 863-867, 908-912, 1032-1036
src/features/constants/settings.ts (4)
1-1: aiModels.tsからの新しいインポートが追加されています。この変更は、モデル定義を中央化するリファクタリングの一部で、ハードコードされたモデルリストの代わりに、集中管理された配列からモデルタイプを導出するように変更しています。これにより一貫性と保守性が向上します。
140-140: モデルタイプの定義方法が改善されました。
OpenAITTSModelの型定義がハードコードされた文字列リテラルの共用型から、openAITTSModels配列の要素から派生する型に変更されました。これにより型定義とモデル配列が自動的に同期され、メンテナンス性が向上します。
171-171: モデルタイプの定義方法が改善されました。
WhisperTranscriptionModelの型定義がハードコードされた文字列リテラルの共用型から、openAIWhisperModels配列の要素から派生する型に変更されました。これにより型定義とモデル配列が自動的に同期され、メンテナンス性が向上します。
166-166:Details
❓ Verification inconclusive
AudioModeModelの型が一般化されました。
この型が特定の文字列リテラルの共用型から単なる
string型に変更されました。この変更により柔軟性は向上しますが、型安全性が低下する可能性があります。モデル名の検証が他の場所で行われることを確認してください。
🏁 Script executed:
#!/bin/bash # AudioModeModelの使用箇所をチェックして、ミスが発生しないことを確認 rg -t ts -t tsx "AudioModeModel" --context 5Length of output: 72
tsxファイルが未定義のため検索に失敗しています。
tsxをタイプ定義に追加して再度検索を実行してください。
🏁 Script executed:
#!/bin/bash # tsxをタイプ定義に追加してAudioModeModelの使用箇所を検索 rg --type-add 'tsx:*.tsx' -t ts,tsx "AudioModeModel" -nLength of output: 86
.tsと.tsxをグロブ指定して再検索してください。
🏁 Script executed:
#!/bin/bash # `.ts` と `.tsx` ファイル内の AudioModeModel 使用箇所を検索 rg "AudioModeModel" --glob '*.ts' --glob '*.tsx' -nLength of output: 363
型安全性の検証を要確認:
AudioModeModelを文字列リテラル共用型から単なるstring型に一般化したことで、柔軟性は向上しますが型安全性が低下します。以下の利用箇所を踏まえ、モデル名が有効な文字列かどうかを確実に検証しているか確認してください。• src/features/constants/settings.ts:
– 166行目でexport type AudioModeModel = stringに変更
• src/features/chat/openAIAudioChat.ts:
– 12行目でインポート
– 26行目で(ss.selectAIModel as AudioModeModel) || defaultModels.openaiAudioとしてキャスト利用
ss.selectAIModel(あるいはその元となる設定値)が、許容するモデル名のリテラル集合から外れた文字列を取らないよう、定義箇所でバリデーション/制約がかかっていることをご確認ください。
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
<slack_thread_ts>1746648373.275889</slack_thread_ts>
Summary by CodeRabbit
新機能
機能改善
バグ修正
ドキュメント
リファクタリング