mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-16 04:25:59 +00:00
✨ feat: support model-level search for Google/Qwen (#6420)
* support extendControls frontend * refactor * feat 完成搜索操控面板 * feat 完成 Google Grounding 集成 * fix tests * 暂时针对有联网配置的 model 开启 * fix tests * update config * prepare search for openrouter * update i18n * fix
This commit is contained in:
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} نسخة",
|
||||
"emptyAgent": "لا يوجد مساعد",
|
||||
"extendControls": {
|
||||
"title": "وظائف توسيع النموذج"
|
||||
},
|
||||
"historyRange": "نطاق التاريخ",
|
||||
"historySummary": "ملخص الرسائل التاريخية",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "إعادة الإنشاء",
|
||||
"roleAndArchive": "الدور والأرشيف",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "كلمات البحث",
|
||||
"title": "تم العثور على {{count}} نتيجة"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "تحديد ما إذا كان من الضروري البحث بناءً على محتوى المحادثة",
|
||||
"title": "الاتصال الذكي"
|
||||
},
|
||||
"disable": "النموذج الحالي لا يدعم استدعاء الوظائف، لذا لا يمكن استخدام وظيفة الاتصال الذكي",
|
||||
"off": {
|
||||
"desc": "استخدام المعرفة الأساسية للنموذج فقط، دون إجراء بحث عبر الإنترنت",
|
||||
"title": "إيقاف الاتصال"
|
||||
},
|
||||
"on": {
|
||||
"desc": "الاستمرار في البحث عبر الإنترنت للحصول على أحدث المعلومات",
|
||||
"title": "الاتصال دائمًا"
|
||||
},
|
||||
"useModelBuiltin": "استخدام محرك البحث المدمج في النموذج"
|
||||
},
|
||||
"title": "بحث عبر الإنترنت"
|
||||
},
|
||||
"searchAgentPlaceholder": "مساعد البحث...",
|
||||
"sendPlaceholder": "أدخل محتوى الدردشة...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "نموذج التقطير DeepSeek-R1 المستند إلى Qwen2.5-Math-7B، تم تحسين أداء الاستدلال من خلال التعلم المعزز وبيانات البداية الباردة، ويعيد نموذج المصدر فتح معايير المهام المتعددة."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "دو باو 1.5 فيجن برو هو نموذج كبير متعدد الوسائط تم تحديثه حديثًا، يدعم التعرف على الصور بدقة أي دقة ونسب عرض إلى ارتفاع متطرفة، مما يعزز القدرة على الاستدلال البصري، والتعرف على الوثائق، وفهم المعلومات التفصيلية، والامتثال للتعليمات."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "دو باو-لايت يوفر سرعة استجابة فائقة وقيمة جيدة للكلفة، ويقدم خيارات أكثر مرونة للعملاء في سيناريوهات مختلفة. يدعم الاستدلال والتنقيح بسعة سياق 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "النموذج الرئيسي الأفضل أداءً، مناسب لمعالجة المهام المعقدة، يقدم أداءً جيدًا في السيناريوهات مثل الاستجابة المرجعية، والتلخيص، والإبداع، وتصنيف النصوص، وألعاب الأدوار. يدعم الاستدلال والتنقيح بسعة سياق 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "أفضل نموذج رئيسي من حيث الأداء، مناسب لمعالجة المهام المعقدة، حيث يظهر أداءً جيدًا في سيناريوهات مثل الأسئلة والأجوبة المرجعية، والتلخيص، والإبداع، وتصنيف النصوص، وأدوار الشخصيات. يدعم استدلال نافذة السياق 256k والتعديل الدقيق."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "النموذج الرئيسي الأفضل أداءً، مناسب لمعالجة المهام المعقدة، يقدم أداءً جيدًا في السيناريوهات مثل الاستجابة المرجعية، والتلخيص، والإبداع، وتصنيف النصوص، وألعاب الأدوار. يدعم الاستدلال والتنقيح بسعة سياق 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "النموذج الرئيسي الأفضل أداءً، مناسب لمعالجة المهام المعقدة، يقدم أداءً جيدًا في السيناريوهات مثل الاستجابة المرجعية، والتلخيص، والإبداع، وتصنيف النصوص، وألعاب الأدوار. يدعم الاستدلال والتنقيح بسعة سياق 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "نموذج دو باو فيجن هو نموذج كبير متعدد الوسائط تم إطلاقه من قبل دو باو، يتمتع بقدرة قوية على فهم الصور والاستدلال، بالإضافة إلى القدرة الدقيقة على فهم التعليمات. أظهر النموذج أداءً قويًا في استخراج معلومات النصوص من الصور، ومهام الاستدلال المعتمدة على الصور، مما يجعله مناسبًا لمهام الأسئلة والأجوبة البصرية الأكثر تعقيدًا وعمومية."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "نموذج دو باو فيجن هو نموذج كبير متعدد الوسائط تم إطلاقه من قبل دو باو، يتمتع بقدرة قوية على فهم الصور والاستدلال، بالإضافة إلى القدرة الدقيقة على فهم التعليمات. أظهر النموذج أداءً قويًا في استخراج معلومات النصوص من الصور، ومهام الاستدلال المعتمدة على الصور، مما يجعله مناسبًا لمهام الأسئلة والأجوبة البصرية الأكثر تعقيدًا وعمومية."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، يغطي كمية هائلة من البيانات باللغة الصينية والإنجليزية، ويتميز بقدرات عامة قوية، يمكنه تلبية معظم متطلبات الحوار، والإجابة على الأسئلة، وإنشاء المحتوى، وتطبيقات الإضافات؛ يدعم الاتصال التلقائي بإضافات بحث بايدو، مما يضمن تحديث معلومات الإجابة."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 يعزز بشكل كبير من قدرة النموذج على الاستدلال في ظل وجود بيانات محدودة جدًا. قبل تقديم الإجابة النهائية، يقوم النموذج أولاً بإخراج سلسلة من التفكير لتحسين دقة الإجابة النهائية."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "دو باو 1.5 لايت هو نموذج الجيل الجديد الخفيف، مع سرعة استجابة قصوى، حيث يصل الأداء والوقت المستغرق إلى مستوى عالمي."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "دو باو 1.5 برو 256k هو النسخة المحدثة من دو باو 1.5 برو، حيث تم تحسين الأداء العام بنسبة 10%. يدعم استدلال نافذة السياق 256k، وطول الإخراج يصل إلى 12k توكن. أداء أعلى، نافذة أكبر، قيمة عالية، مناسب لمجموعة واسعة من سيناريوهات الاستخدام."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "دو باو 1.5 برو هو نموذج الجيل الجديد الرائد، مع ترقية شاملة في الأداء، حيث يظهر تفوقًا في المعرفة، والبرمجة، والاستدلال، وغيرها."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa هو نموذج نفسي، يتمتع بقدرات استشارية متخصصة، يساعد المستخدمين في فهم القضايا العاطفية."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Копие",
|
||||
"emptyAgent": "Няма наличен асистент",
|
||||
"extendControls": {
|
||||
"title": "Разширени функции на модела"
|
||||
},
|
||||
"historyRange": "Диапазон на историята",
|
||||
"historySummary": "Исторически обобщение на съобщения",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Прегенерирай",
|
||||
"roleAndArchive": "Роля и архив",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Търсене на ключови думи",
|
||||
"title": "Намерени са {{count}} резултата"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Интелигентно определяне на необходимостта от търсене въз основа на съдържанието на разговора",
|
||||
"title": "Интелигентно свързване"
|
||||
},
|
||||
"disable": "Текущият модел не поддържа извикване на функции, затова не може да се използва интелигентно свързване",
|
||||
"off": {
|
||||
"desc": "Използва само основните знания на модела, без интернет търсене",
|
||||
"title": "Изключване на свързването"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Постоянно извършва интернет търсене за получаване на най-новата информация",
|
||||
"title": "Винаги свързано"
|
||||
},
|
||||
"useModelBuiltin": "Използване на вградената търсачка на модела"
|
||||
},
|
||||
"title": "Търсене в интернет"
|
||||
},
|
||||
"searchAgentPlaceholder": "Търсач на помощ...",
|
||||
"sendPlaceholder": "Напиши съобщението си тук...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "DeepSeek-R1 дестилиран модел, базиран на Qwen2.5-Math-7B, оптимизира производителността на разсъжденията чрез подсилено учене и данни за студен старт, отворен модел, който обновява многозадачния стандарт."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro е ново обновен мултимодален голям модел, който поддържа разпознаване на изображения с произволна резолюция и екстремни съотношения на страните, подобрявайки способностите за визуално разсъждение, разпознаване на документи, разбиране на детайлна информация и следване на инструкции."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite предлага изключителна скорост на отговор и по-добра цена, предоставяйки на клиентите гъвкави опции за различни сценарии. Поддържа извеждане и фин настройка на контекстов прозорец от 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Най-добрият модел за основни задачи, подходящ за работа с комплексни задачи, с много добри резултати в справочния отговор, обобщение, творчество, текстова класификация и ролеви игри. Поддържа извеждане и фин настройка на контекстов прозорец от 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Най-добрият основен модел, подходящ за обработка на сложни задачи, с отлични резултати в сценарии като отговори на въпроси, резюмиране, творчество, текстова класификация и ролеви игри. Поддържа разсъждения и фина настройка с контекстен прозорец от 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Най-добрият модел за основни задачи, подходящ за работа с комплексни задачи, с много добри резултати в справочния отговор, обобщение, творчество, текстова класификация и ролеви игри. Поддържа извеждане и фин настройка на контекстов прозорец от 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Най-добрият модел за основни задачи, подходящ за работа с комплексни задачи, с много добри резултати в справочния отговор, обобщение, творчество, текстова класификация и ролеви игри. Поддържа извеждане и фин настройка на контекстов прозорец от 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Doubao-vision моделът е мултимодален голям модел, представен от Doubao, който притежава мощни способности за разбиране и разсъждение на изображения, както и прецизно разбиране на инструкции. Моделът показва силни резултати в извличането на текстова информация от изображения и в задачи за разсъждение, базирани на изображения, и може да се прилага в по-сложни и по-широки визуални въпроси."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Doubao-vision моделът е мултимодален голям модел, представен от Doubao, който притежава мощни способности за разбиране и разсъждение на изображения, както и прецизно разбиране на инструкции. Моделът показва силни резултати в извличането на текстова информация от изображения и в задачи за разсъждение, базирани на изображения, и може да се прилага в по-сложни и по-широки визуални въпроси."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Флагманският модел на Baidu, разработен самостоятелно, е мащабен езиков модел, който обхваща огромно количество китайски и английски текстове. Той притежава мощни общи способности и може да отговори на почти всички изисквания за диалогови въпроси и отговори, генериране на съдържание и приложения с плъгини; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията за отговорите."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 значително подобри способността на модела за разсъждение при наличието на много малко маркирани данни. Преди да предостави окончателния отговор, моделът първо ще изведе част от съдържанието на веригата на мислене, за да повиши точността на окончателния отговор."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite е ново поколение лек модел, с изключителна скорост на отговор, който постига световно ниво както по отношение на ефективността, така и на времето за реакция."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k е напълно обновен вариант на Doubao-1.5-Pro, с общо подобрение на ефективността с 10%. Поддържа разсъждения с контекстен прозорец от 256k, а дължината на изхода поддържа максимум 12k токена. По-висока производителност, по-голям прозорец и изключителна цена-качество, подходящ за по-широк спектър от приложения."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro е ново поколение основен модел, с напълно обновени характеристики, който показва отлични резултати в области като знания, код, разсъждения и др."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa е психологически модел с професионални консултантски способности, помагащ на потребителите да разберат емоционалните проблеми."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Kopie",
|
||||
"emptyAgent": "Kein Assistent verfügbar",
|
||||
"extendControls": {
|
||||
"title": "Modell Erweiterungsfunktionen"
|
||||
},
|
||||
"historyRange": "Verlaufsbereich",
|
||||
"historySummary": "Zusammenfassung historischer Nachrichten",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Neu generieren",
|
||||
"roleAndArchive": "Rolle und Archiv",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Suchbegriffe",
|
||||
"title": "Es wurden {{count}} Ergebnisse gefunden"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Intelligente Beurteilung, ob eine Suche basierend auf dem Gesprächsinhalt erforderlich ist",
|
||||
"title": "Intelligente Vernetzung"
|
||||
},
|
||||
"disable": "Das aktuelle Modell unterstützt keine Funktionsaufrufe, daher kann die intelligente Vernetzungsfunktion nicht verwendet werden",
|
||||
"off": {
|
||||
"desc": "Verwendet nur das Grundwissen des Modells, ohne Netzsuche",
|
||||
"title": "Vernetzung deaktivieren"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Führt kontinuierlich Netzsuchen durch, um die neuesten Informationen zu erhalten",
|
||||
"title": "Immer vernetzt"
|
||||
},
|
||||
"useModelBuiltin": "Verwenden Sie die integrierte Suchmaschine des Modells"
|
||||
},
|
||||
"title": "Netzwerksuche"
|
||||
},
|
||||
"searchAgentPlaceholder": "Suchassistent...",
|
||||
"sendPlaceholder": "Chat-Nachricht eingeben...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Das DeepSeek-R1-Distill-Modell basiert auf Qwen2.5-Math-7B und optimiert die Inferenzleistung durch verstärkendes Lernen und Kaltstartdaten. Das Open-Source-Modell setzt neue Maßstäbe für Multitasking."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro ist das neueste Upgrade des multimodalen Großmodells, das die Erkennung von Bildern mit beliebiger Auflösung und extremen Seitenverhältnissen unterstützt und die Fähigkeiten zur visuellen Schlussfolgerung, Dokumentenerkennung, Detailverständnis und Befehlsbefolgung verbessert."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite bietet eine extrem hohe Reaktionsgeschwindigkeit und ein hervorragendes Preis-Leistungs-Verhältnis und bietet den Kunden flexiblere Optionen für verschiedene Szenarien. Es unterstützt Schlussfolgerungen und Feinabstimmungen mit einem 128k-Kontextfenster."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Das leistungsstärkste Hauptmodell, das sich zur Verarbeitung komplexer Aufgaben eignet und in Szenarien wie Referenzfragen, Zusammenfassungen, Kreativität, Textklassifizierung und Rollenspiel sehr gute Ergebnisse erzielt. Es unterstützt Schlussfolgerungen und Feinabstimmungen mit einem 128k-Kontextfenster."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Das leistungsstärkste Hauptmodell, das sich gut für komplexe Aufgaben eignet und in Szenarien wie Referenzfragen, Zusammenfassungen, kreatives Schreiben, Textklassifizierung und Rollenspiel hervorragende Ergebnisse erzielt. Es unterstützt Schlussfolgerungen und Feinabstimmungen mit einem Kontextfenster von 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Das leistungsstärkste Hauptmodell, das sich zur Verarbeitung komplexer Aufgaben eignet und in Szenarien wie Referenzfragen, Zusammenfassungen, Kreativität, Textklassifizierung und Rollenspiel sehr gute Ergebnisse erzielt. Es unterstützt Schlussfolgerungen und Feinabstimmungen mit einem 32k-Kontextfenster."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Das leistungsstärkste Hauptmodell, das sich zur Verarbeitung komplexer Aufgaben eignet und in Szenarien wie Referenzfragen, Zusammenfassungen, Kreativität, Textklassifizierung und Rollenspiel sehr gute Ergebnisse erzielt. Es unterstützt Schlussfolgerungen und Feinabstimmungen mit einem 4k-Kontextfenster."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Das Doubao-vision-Modell ist ein multimodales Großmodell, das von Doubao eingeführt wurde und über starke Fähigkeiten zur Bildverständnis und Schlussfolgerung sowie präzise Befehlsverständnisfähigkeiten verfügt. Das Modell zeigt starke Leistungen bei der Extraktion von Bildtextinformationen und bildbasierten Schlussfolgerungsaufgaben und kann in komplexeren und breiteren visuellen Frage-Antwort-Aufgaben eingesetzt werden."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Das Doubao-vision-Modell ist ein multimodales Großmodell, das von Doubao eingeführt wurde und über starke Fähigkeiten zur Bildverständnis und Schlussfolgerung sowie präzise Befehlsverständnisfähigkeiten verfügt. Das Modell zeigt starke Leistungen bei der Extraktion von Bildtextinformationen und bildbasierten Schlussfolgerungsaufgaben und kann in komplexeren und breiteren visuellen Frage-Antwort-Aufgaben eingesetzt werden."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Das von Baidu entwickelte Flaggschiff-Modell für großangelegte Sprachverarbeitung, das eine riesige Menge an chinesischen und englischen Texten abdeckt. Es verfügt über starke allgemeine Fähigkeiten und kann die meisten Anforderungen an Dialogfragen, kreative Generierung und Anwendungsfälle von Plugins erfüllen. Es unterstützt die automatische Anbindung an das Baidu-Such-Plugin, um die Aktualität der Antwortinformationen zu gewährleisten."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 hat die Schlussfolgerungsfähigkeiten des Modells erheblich verbessert, selbst bei nur wenigen gekennzeichneten Daten. Bevor das Modell die endgültige Antwort ausgibt, gibt es zunächst eine Denkprozesskette aus, um die Genauigkeit der endgültigen Antwort zu erhöhen."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite ist das neueste leichte Modell der nächsten Generation, das eine extrem schnelle Reaktionszeit bietet und sowohl in der Leistung als auch in der Latenz weltweit erstklassig ist."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k ist die umfassend verbesserte Version von Doubao-1.5-Pro, die die Gesamtleistung um 10 % steigert. Es unterstützt Schlussfolgerungen mit einem Kontextfenster von 256k und eine maximale Ausgabelänge von 12k Tokens. Höhere Leistung, größeres Fenster und ein hervorragendes Preis-Leistungs-Verhältnis machen es für eine breitere Palette von Anwendungsszenarien geeignet."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro ist das neueste Hauptmodell der nächsten Generation, dessen Leistung umfassend verbessert wurde und das in den Bereichen Wissen, Code, Schlussfolgerungen usw. herausragende Leistungen zeigt."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa ist ein psychologisches Modell mit professionellen Beratungsfähigkeiten, das den Nutzern hilft, emotionale Probleme zu verstehen."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Copy",
|
||||
"emptyAgent": "No assistant available",
|
||||
"extendControls": {
|
||||
"title": "Model Extension Features"
|
||||
},
|
||||
"historyRange": "History Range",
|
||||
"historySummary": "Historical Message Summary",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Regenerate",
|
||||
"roleAndArchive": "Role and Archive",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Search Keywords",
|
||||
"title": "Found {{count}} results"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Intelligently determine whether a search is needed based on the conversation content",
|
||||
"title": "Smart Online Search"
|
||||
},
|
||||
"disable": "The current model does not support function calls, so the smart online search feature is unavailable",
|
||||
"off": {
|
||||
"desc": "Use only the model's basic knowledge without performing a web search",
|
||||
"title": "Disable Online Search"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Continuously perform web searches to obtain the latest information",
|
||||
"title": "Always Online"
|
||||
},
|
||||
"useModelBuiltin": "Use the model's built-in search engine"
|
||||
},
|
||||
"title": "Online Search"
|
||||
},
|
||||
"searchAgentPlaceholder": "Search assistants...",
|
||||
"sendPlaceholder": "Type your message here...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "The DeepSeek-R1 distillation model based on Qwen2.5-Math-7B optimizes inference performance through reinforcement learning and cold-start data, refreshing the benchmark for open-source models across multiple tasks."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro is a newly upgraded multimodal large model that supports image recognition at any resolution and extreme aspect ratios, enhancing visual reasoning, document recognition, detail understanding, and instruction-following capabilities."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite provides extreme response speed and better cost-effectiveness, offering flexible options for various customer scenarios. It supports inference and fine-tuning with a 128k context window."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "The best-performing primary model designed to handle complex tasks, achieving strong performance in scenarios such as reference Q&A, summarization, creative writing, text classification, and role-playing. It supports inference and fine-tuning with a 128k context window."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "The best-performing flagship model, suitable for handling complex tasks, with excellent results in reference Q&A, summarization, creative writing, text classification, role-playing, and more. It supports reasoning and fine-tuning with a 256k context window."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "The best-performing primary model suited for complex tasks, showing great results in reference Q&A, summarization, creative writing, text classification, and role-playing. It supports inference and fine-tuning with a 32k context window."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "The best-performing primary model suitable for handling complex tasks, demonstrating excellent performance in scenarios such as reference Q&A, summarization, creative writing, text classification, and role-playing. It supports inference and fine-tuning with a 4k context window."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "The Doubao-vision model is a multimodal large model launched by Doubao, featuring powerful image understanding and reasoning capabilities, as well as precise instruction comprehension. The model has demonstrated strong performance in image-text information extraction and image-based reasoning tasks, making it applicable to more complex and broader visual question-answering tasks."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "The Doubao-vision model is a multimodal large model launched by Doubao, featuring powerful image understanding and reasoning capabilities, as well as precise instruction comprehension. The model has demonstrated strong performance in image-text information extraction and image-based reasoning tasks, making it applicable to more complex and broader visual question-answering tasks."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Baidu's self-developed flagship large-scale language model, covering a vast amount of Chinese and English corpus. It possesses strong general capabilities, meeting the requirements for most dialogue Q&A, creative generation, and plugin application scenarios; it supports automatic integration with Baidu's search plugin to ensure the timeliness of Q&A information."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 significantly enhances model reasoning capabilities with minimal labeled data. Before outputting the final answer, the model first provides a chain of thought to improve the accuracy of the final response."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite is a new generation lightweight model, offering extreme response speed with performance and latency at a world-class level."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k is an upgraded version of Doubao-1.5-Pro, significantly enhancing overall performance by 10%. It supports reasoning with a 256k context window and an output length of up to 12k tokens. With higher performance, a larger window, and exceptional cost-effectiveness, it is suitable for a wider range of applications."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro is a new generation flagship model with comprehensive performance upgrades, excelling in knowledge, coding, reasoning, and more."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa is a psychological model with professional counseling capabilities, helping users understand emotional issues."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Copia",
|
||||
"emptyAgent": "No hay asistente disponible",
|
||||
"extendControls": {
|
||||
"title": "Funciones de extensión del modelo"
|
||||
},
|
||||
"historyRange": "Rango de historial",
|
||||
"historySummary": "Resumen de mensajes históricos",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Regenerar",
|
||||
"roleAndArchive": "Rol y archivo",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Palabras clave de búsqueda",
|
||||
"title": "Se han encontrado {{count}} resultados"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Determina inteligentemente si se necesita buscar según el contenido de la conversación",
|
||||
"title": "Conexión inteligente"
|
||||
},
|
||||
"disable": "El modelo actual no admite llamadas a funciones, por lo que no se puede utilizar la función de conexión inteligente",
|
||||
"off": {
|
||||
"desc": "Utiliza solo el conocimiento básico del modelo, sin realizar búsquedas en línea",
|
||||
"title": "Desactivar conexión"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Realiza búsquedas en línea continuamente para obtener la información más reciente",
|
||||
"title": "Siempre conectado"
|
||||
},
|
||||
"useModelBuiltin": "Utilizar el motor de búsqueda integrado del modelo"
|
||||
},
|
||||
"title": "Búsqueda en línea"
|
||||
},
|
||||
"searchAgentPlaceholder": "Asistente de búsqueda...",
|
||||
"sendPlaceholder": "Escribe tu mensaje...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "El modelo de destilación DeepSeek-R1 basado en Qwen2.5-Math-7B optimiza el rendimiento de inferencia mediante aprendizaje por refuerzo y datos de arranque en frío, actualizando el estándar de múltiples tareas en modelos de código abierto."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro es un modelo multimodal de gran tamaño, actualizado, que soporta el reconocimiento de imágenes de cualquier resolución y proporciones extremas, mejorando la capacidad de razonamiento visual, reconocimiento de documentos, comprensión de información detallada y cumplimiento de instrucciones."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite presenta una velocidad de respuesta extrema y una mejor relación calidad-precio, ofreciendo opciones más flexibles para diferentes escenarios de clientes. Admite inferencia y ajuste fino con ventanas de contexto de 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "El modelo principal más eficaz, adecuado para manejar tareas complejas, con un excelente rendimiento en escenarios como preguntas y respuestas de referencia, resúmenes, creación de contenido, clasificación de textos y juegos de roles. Admite inferencia y ajuste fino con ventanas de contexto de 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "El modelo principal con el mejor rendimiento, adecuado para manejar tareas complejas, mostrando buenos resultados en escenarios como preguntas y respuestas de referencia, resúmenes, creación, clasificación de textos y juegos de roles. Soporta razonamiento y ajuste fino con una ventana de contexto de 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "El modelo principal más eficaz, adecuado para manejar tareas complejas, con un excelente rendimiento en escenarios como preguntas y respuestas de referencia, resúmenes, creación de contenido, clasificación de textos y juegos de roles. Admite inferencia y ajuste fino con ventanas de contexto de 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "El modelo principal más eficaz, adecuado para manejar tareas complejas, con un excelente rendimiento en escenarios como preguntas y respuestas de referencia, resúmenes, creación de contenido, clasificación de textos y juegos de roles. Admite inferencia y ajuste fino con ventanas de contexto de 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "El modelo Doubao-vision es un modelo multimodal lanzado por Doubao, que cuenta con potentes capacidades de comprensión e inferencia de imágenes, así como una precisa capacidad de comprensión de instrucciones. El modelo ha demostrado un rendimiento excepcional en la extracción de información textual de imágenes y en tareas de razonamiento basadas en imágenes, siendo aplicable a tareas de preguntas y respuestas visuales más complejas y amplias."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "El modelo Doubao-vision es un modelo multimodal lanzado por Doubao, que cuenta con potentes capacidades de comprensión e inferencia de imágenes, así como una precisa capacidad de comprensión de instrucciones. El modelo ha demostrado un rendimiento excepcional en la extracción de información textual de imágenes y en tareas de razonamiento basadas en imágenes, siendo aplicable a tareas de preguntas y respuestas visuales más complejas y amplias."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Modelo de lenguaje a gran escala de primera línea desarrollado por Baidu, que abarca una vasta cantidad de corpus en chino y en inglés, con potentes capacidades generales que pueden satisfacer la mayoría de los requisitos de preguntas y respuestas en diálogos, generación de contenido y aplicaciones de plugins; soporta la integración automática con el plugin de búsqueda de Baidu, garantizando la actualidad de la información en las respuestas."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 mejora significativamente la capacidad de razonamiento del modelo con muy pocos datos etiquetados. Antes de proporcionar la respuesta final, el modelo genera una cadena de pensamiento para mejorar la precisión de la respuesta final."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite es un modelo ligero de nueva generación, con una velocidad de respuesta extrema, alcanzando niveles de rendimiento y latencia de clase mundial."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k es una versión mejorada de Doubao-1.5-Pro, con un aumento del 10% en el rendimiento general. Soporta razonamiento con una ventana de contexto de 256k y una longitud de salida de hasta 12k tokens. Mayor rendimiento, ventana más grande y una excelente relación calidad-precio, adecuado para una amplia gama de escenarios de aplicación."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro es un modelo de nueva generación, con un rendimiento completamente mejorado, destacando en conocimientos, código, razonamiento, entre otros."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa es un modelo psicológico con capacidades de consulta profesional, ayudando a los usuarios a comprender problemas emocionales."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "نسخهای از {{title}}",
|
||||
"emptyAgent": "دستیار موجود نیست",
|
||||
"extendControls": {
|
||||
"title": "ویژگیهای گسترش مدل"
|
||||
},
|
||||
"historyRange": "محدوده تاریخی",
|
||||
"historySummary": "خلاصه پیامهای تاریخی",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "بازتولید",
|
||||
"roleAndArchive": "نقشها و بایگانی",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "کلمات کلیدی جستجو",
|
||||
"title": "تعداد {{count}} نتیجه پیدا شد"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "به طور هوشمندانه بر اساس محتوای گفتگو تشخیص میدهد که آیا نیاز به جستجو است",
|
||||
"title": "اتصال هوشمند"
|
||||
},
|
||||
"disable": "مدل فعلی از فراخوانی توابع پشتیبانی نمیکند، بنابراین نمیتوان از ویژگی اتصال هوشمند استفاده کرد",
|
||||
"off": {
|
||||
"desc": "فقط از دانش پایه مدل استفاده میکند و جستجوی اینترنتی انجام نمیدهد",
|
||||
"title": "قطع اتصال"
|
||||
},
|
||||
"on": {
|
||||
"desc": "به طور مداوم جستجوی اینترنتی انجام میدهد و اطلاعات جدید را به دست میآورد",
|
||||
"title": "همیشه متصل"
|
||||
},
|
||||
"useModelBuiltin": "استفاده از موتور جستجوی داخلی مدل"
|
||||
},
|
||||
"title": "جستجوی متصل"
|
||||
},
|
||||
"searchAgentPlaceholder": "جستجوی دستیار...",
|
||||
"sendPlaceholder": "نوشتن پیام...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "مدل تقطیر DeepSeek-R1 مبتنی بر Qwen2.5-Math-7B است که با استفاده از یادگیری تقویتی و دادههای شروع سرد عملکرد استدلال را بهینهسازی کرده و مدلهای متنباز را به روز کرده است."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "مدل بزرگ چندرسانهای ارتقاء یافته Doubao-1.5-vision-pro، از شناسایی تصاویر با هر وضوح و نسبت ابعاد بسیار طولانی پشتیبانی میکند و تواناییهای استدلال بصری، شناسایی اسناد، درک اطلاعات جزئی و پیروی از دستورات را تقویت میکند."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite دارای سرعت پاسخدهی بسیار بالا و قیمت مناسبتر است و برای سناریوهای مختلف مشتریان گزینههای منعطفتری ارائه میدهد. این مدل از استنتاج و تنظیم 128k پنجره متنی پشتیبانی میکند."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "بهترین مدل اصلی با عملکرد بسیار خوب برای پردازش وظایف پیچیده است و در سناریوهایی مانند پرسش و پاسخ مدل مرجع، خلاصهنویسی، خلاقیت، طبقهبندی متن و بازی نقش عملکرد خوبی دارد. این مدل از استنتاج و تنظیم 128k پنجره متنی پشتیبانی میکند."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "بهترین مدل اصلی از نظر عملکرد، مناسب برای پردازش وظایف پیچیده، در زمینههای پرسش و پاسخ مرجع، خلاصهسازی، خلاقیت، طبقهبندی متن و نقشآفرینی عملکرد خوبی دارد. از استدلال و تنظیم دقیق با پنجره زمینه 256k پشتیبانی میکند."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "بهترین مدل اصلی با عملکرد بسیار خوب برای پردازش وظایف پیچیده است و در سناریوهایی مانند پرسش و پاسخ مدل مرجع، خلاصهنویسی، خلاقیت، طبقهبندی متن و بازی نقش عملکرد خوبی دارد. این مدل از استنتاج و تنظیم 32k پنجره متنی پشتیبانی میکند."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "بهترین مدل اصلی با عملکرد بسیار خوب برای پردازش وظایف پیچیده است و در سناریوهایی مانند پرسش و پاسخ مدل مرجع، خلاصهنویسی، خلاقیت، طبقهبندی متن و بازی نقش عملکرد خوبی دارد. این مدل از استنتاج و تنظیم 4k پنجره متنی پشتیبانی میکند."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "مدل Doubao-vision یک مدل بزرگ چندرسانهای است که توسط Doubao ارائه شده و دارای تواناییهای قوی در درک و استدلال تصاویر و همچنین درک دقیق دستورات است. این مدل در استخراج اطلاعات متنی از تصاویر و وظایف استدلال مبتنی بر تصویر عملکرد قوی از خود نشان داده و میتواند در وظایف پیچیدهتر و گستردهتر پرسش و پاسخ بصری به کار رود."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "مدل Doubao-vision یک مدل بزرگ چندرسانهای است که توسط Doubao ارائه شده و دارای تواناییهای قوی در درک و استدلال تصاویر و همچنین درک دقیق دستورات است. این مدل در استخراج اطلاعات متنی از تصاویر و وظایف استدلال مبتنی بر تصویر عملکرد قوی از خود نشان داده و میتواند در وظایف پیچیدهتر و گستردهتر پرسش و پاسخ بصری به کار رود."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "مدل زبان بزرگ پرچمدار توسعهیافته توسط بایدو، که حجم عظیمی از متون چینی و انگلیسی را پوشش میدهد و دارای تواناییهای عمومی قدرتمندی است. این مدل میتواند نیازهای اکثر سناریوهای پرسش و پاسخ، تولید محتوا و استفاده از افزونهها را برآورده کند؛ همچنین از اتصال خودکار به افزونه جستجوی بایدو پشتیبانی میکند تا بهروز بودن اطلاعات پرسش و پاسخ را تضمین کند."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 با وجود دادههای برچسبگذاری شده بسیار کم، توانایی استدلال مدل را به طرز چشمگیری افزایش میدهد. قبل از ارائه پاسخ نهایی، مدل ابتدا یک زنجیره تفکر را تولید میکند تا دقت پاسخ نهایی را افزایش دهد."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "مدل سبک نسل جدید Doubao-1.5-lite، با سرعت پاسخدهی فوقالعاده، عملکرد و تأخیر در سطح جهانی را ارائه میدهد."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k نسخه ارتقاء یافته Doubao-1.5-Pro است که به طور کلی عملکرد را 10% بهبود میبخشد. از استدلال با پنجره زمینه 256k پشتیبانی میکند و طول خروجی حداکثر 12k توکن را پشتیبانی میکند. عملکرد بالاتر، پنجره بزرگتر و قیمت فوقالعاده، مناسب برای کاربردهای گستردهتر."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "مدل اصلی نسل جدید Doubao-1.5-pro، با ارتقاء کامل عملکرد، در زمینههای دانش، کد، استدلال و غیره عملکرد برجستهای دارد."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa یک مدل روانشناختی است که دارای توانایی مشاوره حرفهای بوده و به کاربران در درک مسائل احساسی کمک میکند."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Copie",
|
||||
"emptyAgent": "Aucun assistant disponible",
|
||||
"extendControls": {
|
||||
"title": "Fonctionnalités d'extension du modèle"
|
||||
},
|
||||
"historyRange": "Plage d'historique",
|
||||
"historySummary": "Résumé des messages historiques",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Regénérer",
|
||||
"roleAndArchive": "Rôle et archivage",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Mots-clés de recherche",
|
||||
"title": "{{count}} résultats trouvés"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Détermine intelligemment si une recherche est nécessaire en fonction du contenu de la conversation",
|
||||
"title": "Connexion intelligente"
|
||||
},
|
||||
"disable": "Le modèle actuel ne prend pas en charge l'appel de fonctions, donc la fonctionnalité de connexion intelligente est indisponible",
|
||||
"off": {
|
||||
"desc": "Utilise uniquement les connaissances de base du modèle, sans recherche en ligne",
|
||||
"title": "Déconnexion"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Effectue en continu des recherches en ligne pour obtenir les informations les plus récentes",
|
||||
"title": "Toujours connecté"
|
||||
},
|
||||
"useModelBuiltin": "Utiliser le moteur de recherche intégré du modèle"
|
||||
},
|
||||
"title": "Recherche en ligne"
|
||||
},
|
||||
"searchAgentPlaceholder": "Assistant de recherche...",
|
||||
"sendPlaceholder": "Saisissez votre message...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Le modèle distillé DeepSeek-R1 basé sur Qwen2.5-Math-7B optimise les performances d'inférence grâce à l'apprentissage par renforcement et aux données de démarrage à froid, rafraîchissant les références multi-tâches des modèles open source."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro est un modèle multimodal de grande taille récemment mis à jour, prenant en charge la reconnaissance d'images à toute résolution et avec des rapports d'aspect extrêmes, améliorant les capacités de raisonnement visuel, de reconnaissance de documents, de compréhension des informations détaillées et de suivi des instructions."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite présente une rapidité de réponse exceptionnelle et un excellent rapport qualité-prix, offrant des choix plus flexibles pour différents scénarios clients. Prend en charge le raisonnement et le réglage fin avec une fenêtre de contexte de 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Le modèle principal offrant les meilleures performances, adapté aux tâches complexes, avec de bons résultats dans des scénarios tels que le question-réponse, le résumé, la création, la classification de texte et le jeu de rôle. Prend en charge le raisonnement et le réglage fin avec une fenêtre de contexte de 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Le modèle phare avec les meilleures performances, adapté au traitement de tâches complexes, offrant de bons résultats dans des scénarios tels que les questions-réponses de référence, les résumés, la création, la classification de texte et le jeu de rôle. Prend en charge le raisonnement et le réglage fin avec une fenêtre contextuelle de 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Le modèle principal offrant les meilleures performances, adapté aux tâches complexes, avec de bons résultats dans des scénarios tels que le question-réponse, le résumé, la création, la classification de texte et le jeu de rôle. Prend en charge le raisonnement et le réglage fin avec une fenêtre de contexte de 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Le modèle principal offrant les meilleures performances, adapté aux tâches complexes, avec de bons résultats dans des scénarios tels que le question-réponse, le résumé, la création, la classification de texte et le jeu de rôle. Prend en charge le raisonnement et le réglage fin avec une fenêtre de contexte de 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Le modèle Doubao-vision est un modèle multimodal lancé par Doubao, doté de puissantes capacités de compréhension et de raisonnement d'images, ainsi que d'une compréhension précise des instructions. Le modèle a démontré de solides performances dans l'extraction d'informations textuelles à partir d'images et dans des tâches de raisonnement basées sur des images, pouvant être appliqué à des tâches de questions-réponses visuelles plus complexes et variées."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Le modèle Doubao-vision est un modèle multimodal lancé par Doubao, doté de puissantes capacités de compréhension et de raisonnement d'images, ainsi que d'une compréhension précise des instructions. Le modèle a démontré de solides performances dans l'extraction d'informations textuelles à partir d'images et dans des tâches de raisonnement basées sur des images, pouvant être appliqué à des tâches de questions-réponses visuelles plus complexes et variées."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Modèle de langage à grande échelle de pointe développé par Baidu, couvrant une vaste quantité de corpus en chinois et en anglais, avec de puissantes capacités générales, capable de répondre à la plupart des exigences en matière de dialogue, de questions-réponses, de création de contenu et d'applications de plugins ; prend en charge l'intégration automatique avec le plugin de recherche Baidu, garantissant la pertinence des informations de réponse."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 améliore considérablement les capacités de raisonnement du modèle avec très peu de données annotées. Avant de fournir la réponse finale, le modèle génère d'abord une chaîne de pensée pour améliorer l'exactitude de la réponse finale."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite est un modèle léger de nouvelle génération, offrant une vitesse de réponse extrême, avec des performances et des délais atteignant des niveaux de classe mondiale."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k est une version améliorée de Doubao-1.5-Pro, offrant une amélioration globale de 10%. Il prend en charge le raisonnement avec une fenêtre contextuelle de 256k et une longueur de sortie maximale de 12k tokens. Performances supérieures, plus grande fenêtre, rapport qualité-prix exceptionnel, adapté à un large éventail de scénarios d'application."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro est un modèle phare de nouvelle génération, avec des performances entièrement améliorées, se distinguant dans les domaines de la connaissance, du code, du raisonnement, etc."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa est un modèle psychologique, doté de compétences de conseil professionnel, aidant les utilisateurs à comprendre les problèmes émotionnels."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Copia",
|
||||
"emptyAgent": "Nessun assistente disponibile",
|
||||
"extendControls": {
|
||||
"title": "Funzionalità di estensione del modello"
|
||||
},
|
||||
"historyRange": "Intervallo cronologico",
|
||||
"historySummary": "Riepilogo della storia",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Rigenera",
|
||||
"roleAndArchive": "Ruolo e archivio",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Parole chiave di ricerca",
|
||||
"title": "Trovati {{count}} risultati"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Determina intelligentemente se è necessario cercare in base al contenuto della conversazione",
|
||||
"title": "Collegamento intelligente"
|
||||
},
|
||||
"disable": "Il modello attuale non supporta le chiamate di funzione, quindi non è possibile utilizzare la funzionalità di collegamento intelligente",
|
||||
"off": {
|
||||
"desc": "Utilizza solo la conoscenza di base del modello, senza effettuare ricerche online",
|
||||
"title": "Disattiva collegamento"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Esegue continuamente ricerche online per ottenere le informazioni più recenti",
|
||||
"title": "Collegamento sempre attivo"
|
||||
},
|
||||
"useModelBuiltin": "Utilizza il motore di ricerca integrato del modello"
|
||||
},
|
||||
"title": "Ricerca online"
|
||||
},
|
||||
"searchAgentPlaceholder": "Assistente di ricerca...",
|
||||
"sendPlaceholder": "Inserisci il testo della chat...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Il modello di distillazione DeepSeek-R1 basato su Qwen2.5-Math-7B ottimizza le prestazioni di inferenza attraverso l'apprendimento rinforzato e dati di avvio a freddo, aggiornando il benchmark multi-task del modello open source."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro è un modello multimodale aggiornato, che supporta il riconoscimento di immagini con qualsiasi risoluzione e rapporti di aspetto estremi, migliorando le capacità di ragionamento visivo, riconoscimento di documenti, comprensione delle informazioni dettagliate e capacità di seguire istruzioni."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite offre un'estrema velocità di risposta, un miglior rapporto qualità-prezzo e opzioni più flessibili per diversi scenari dei clienti. Supporta inferenze e fine-tuning con una finestra di contesto di 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Il modello principale presenta le migliori prestazioni, adatto per compiti complessi, con risultati eccellenti in scenari di domanda di riferimento, sintesi, creazione, classificazione del testo, e role-playing. Supporta inferenze e fine-tuning con una finestra di contesto di 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Il modello principale con le migliori prestazioni, adatto a gestire compiti complessi, con ottimi risultati in scenari di domande e risposte, riassunti, creazione, classificazione del testo e interpretazione di ruoli. Supporta il ragionamento e il fine-tuning con una finestra di contesto di 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Il modello principale presenta le migliori prestazioni, adatto per compiti complessi, con risultati eccellenti in scenari di domanda di riferimento, sintesi, creazione, classificazione del testo, e role-playing. Supporta inferenze e fine-tuning con una finestra di contesto di 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Il modello principale presenta le migliori prestazioni, adatto per compiti complessi, con risultati eccellenti in scenari di domanda di riferimento, sintesi, creazione, classificazione del testo, e role-playing. Supporta inferenze e fine-tuning con una finestra di contesto di 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Il modello Doubao-vision è un modello multimodale lanciato da Doubao, dotato di potenti capacità di comprensione e ragionamento delle immagini, nonché di una precisa comprensione delle istruzioni. Il modello ha dimostrato prestazioni eccezionali nell'estrazione di informazioni testuali da immagini e in compiti di ragionamento basati su immagini, applicabile a compiti di domanda e risposta visiva più complessi e ampi."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Il modello Doubao-vision è un modello multimodale lanciato da Doubao, dotato di potenti capacità di comprensione e ragionamento delle immagini, nonché di una precisa comprensione delle istruzioni. Il modello ha dimostrato prestazioni eccezionali nell'estrazione di informazioni testuali da immagini e in compiti di ragionamento basati su immagini, applicabile a compiti di domanda e risposta visiva più complessi e ampi."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Modello di linguaggio di grande scala di punta sviluppato da Baidu, che copre un'enorme quantità di dati in cinese e inglese, con potenti capacità generali, in grado di soddisfare la maggior parte delle esigenze di domande e risposte, generazione creativa e scenari di applicazione dei plugin; supporta l'integrazione automatica con il plugin di ricerca di Baidu, garantendo l'aggiornamento delle informazioni nelle risposte."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 ha notevolmente migliorato le capacità di ragionamento del modello con pochissimi dati etichettati. Prima di fornire la risposta finale, il modello genera una catena di pensiero per migliorare l'accuratezza della risposta finale."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite è un modello leggero di nuova generazione, con una velocità di risposta eccezionale, raggiungendo standard di livello mondiale sia in termini di prestazioni che di latenza."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k è una versione completamente aggiornata di Doubao-1.5-Pro, con un miglioramento complessivo delle prestazioni del 10%. Supporta il ragionamento con una finestra di contesto di 256k e una lunghezza di output massima di 12k token. Maggiore prestazioni, finestra più ampia e un eccellente rapporto qualità-prezzo, adatto a una gamma più ampia di scenari applicativi."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro è un modello di nuova generazione, con prestazioni completamente aggiornate, eccellente in conoscenza, codice, ragionamento e altro."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa è un modello psicologico, con capacità di consulenza professionale, aiuta gli utenti a comprendere i problemi emotivi."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} のコピー",
|
||||
"emptyAgent": "エージェントがいません",
|
||||
"extendControls": {
|
||||
"title": "モデル拡張機能"
|
||||
},
|
||||
"historyRange": "履歴範囲",
|
||||
"historySummary": "履歴メッセージの要約",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "再生成",
|
||||
"roleAndArchive": "役割とアーカイブ",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "検索キーワード",
|
||||
"title": "検索結果が {{count}} 件見つかりました"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "会話の内容に基づいて、検索が必要かどうかを自動的に判断します",
|
||||
"title": "インテリジェント接続"
|
||||
},
|
||||
"disable": "現在のモデルは関数呼び出しをサポートしていないため、インテリジェント接続機能は使用できません",
|
||||
"off": {
|
||||
"desc": "モデルの基本知識のみを使用し、ネット検索は行いません",
|
||||
"title": "接続をオフ"
|
||||
},
|
||||
"on": {
|
||||
"desc": "最新情報を取得するために継続的にネット検索を行います",
|
||||
"title": "常に接続"
|
||||
},
|
||||
"useModelBuiltin": "モデル内蔵の検索エンジンを使用"
|
||||
},
|
||||
"title": "ネット接続検索"
|
||||
},
|
||||
"searchAgentPlaceholder": "検索アシスタント...",
|
||||
"sendPlaceholder": "チャット内容を入力してください...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Qwen2.5-Math-7Bに基づくDeepSeek-R1蒸留モデルで、強化学習とコールドスタートデータを通じて推論性能を最適化し、オープンソースモデルがマルチタスクの基準を刷新しました。"
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-proは全く新しいアップグレード版のマルチモーダル大モデルで、任意の解像度と極端なアスペクト比の画像認識をサポートし、視覚推論、文書認識、詳細情報の理解、指示遵守能力を強化しています。"
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-liteは、極めて高速な応答速度と優れたコストパフォーマンスを備え、顧客のさまざまなシーンに柔軟な選択肢を提供します。128kコンテキストウィンドウの推論と微調整をサポートしています。"
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "最も効果的な主力モデルで、複雑なタスクの処理に適しており、参考質問応答、要約、創作、テキスト分類、ロールプレイングなどのシーンで素晴らしい結果を出します。128kコンテキストウィンドウの推論と微調整をサポートしています。"
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "最も効果的な主力モデルで、複雑なタスクの処理に適しており、参考質問応答、要約、創作、テキスト分類、ロールプレイなどのシーンで優れた効果を発揮します。256kのコンテキストウィンドウでの推論とファインチューニングをサポートします。"
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "最も効果的な主力モデルで、複雑なタスクの処理に適しており、参考質問応答、要約、創作、テキスト分類、ロールプレイングなどのシーンで素晴らしい結果を出します。32kコンテキストウィンドウの推論と微調整をサポートしています。"
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "最も効果的な主力モデルで、複雑なタスクの処理に適しており、参考質問応答、要約、創作、テキスト分類、ロールプレイングなどのシーンで素晴らしい結果を出します。4kコンテキストウィンドウの推論と微調整をサポートしています。"
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Doubao-visionモデルは豆包が提供するマルチモーダル大モデルで、強力な画像理解と推論能力、正確な指示理解能力を備えています。モデルは画像テキスト情報の抽出や画像に基づく推論タスクで強力な性能を発揮し、より複雑で広範な視覚的質問応答タスクに応用できます。"
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Doubao-visionモデルは豆包が提供するマルチモーダル大モデルで、強力な画像理解と推論能力、正確な指示理解能力を備えています。モデルは画像テキスト情報の抽出や画像に基づく推論タスクで強力な性能を発揮し、より複雑で広範な視覚的質問応答タスクに応用できます。"
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "百度が独自に開発したフラッグシップの大規模言語モデルで、膨大な中英語のコーパスをカバーし、強力な汎用能力を持っています。ほとんどの対話型質問応答、創作生成、プラグインアプリケーションの要件を満たすことができます。また、百度検索プラグインとの自動接続をサポートし、質問応答情報のタイムリーさを保証します。"
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1は、わずかなラベル付きデータしかない状況で、モデルの推論能力を大幅に向上させました。最終的な回答を出力する前に、モデルは思考の連鎖を出力し、最終的な答えの正確性を向上させます。"
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-liteは全く新しい世代の軽量版モデルで、極限の応答速度を実現し、効果と遅延の両方で世界トップレベルに達しています。"
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256kはDoubao-1.5-Proの全面的なアップグレード版で、全体的な効果が10%大幅に向上しました。256kのコンテキストウィンドウでの推論をサポートし、出力長は最大12kトークンをサポートします。より高い性能、より大きなウィンドウ、超高コストパフォーマンスで、より広範なアプリケーションシーンに適しています。"
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-proは全く新しい世代の主力モデルで、性能が全面的にアップグレードされ、知識、コード、推論などの面で卓越したパフォーマンスを発揮します。"
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaaは心理モデルで、専門的な相談能力を持ち、ユーザーが感情問題を理解するのを助けます。"
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} 복사본",
|
||||
"emptyAgent": "도우미가 없습니다",
|
||||
"extendControls": {
|
||||
"title": "모델 확장 기능"
|
||||
},
|
||||
"historyRange": "대화 기록 범위",
|
||||
"historySummary": "역사 메시지 요약",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "재생성",
|
||||
"roleAndArchive": "역할 및 아카이브",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "검색 키워드",
|
||||
"title": "{{count}}개의 결과가 검색되었습니다"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "대화 내용을 기반으로 검색 필요성을 스마트하게 판단",
|
||||
"title": "스마트 연결"
|
||||
},
|
||||
"disable": "현재 모델은 함수 호출을 지원하지 않으므로 스마트 연결 기능을 사용할 수 없습니다",
|
||||
"off": {
|
||||
"desc": "모델의 기본 지식만 사용하고 네트워크 검색을 수행하지 않음",
|
||||
"title": "연결 끄기"
|
||||
},
|
||||
"on": {
|
||||
"desc": "지속적으로 네트워크 검색을 수행하여 최신 정보를 얻음",
|
||||
"title": "항상 연결"
|
||||
},
|
||||
"useModelBuiltin": "모델 내장 검색 엔진 사용"
|
||||
},
|
||||
"title": "연결 검색"
|
||||
},
|
||||
"searchAgentPlaceholder": "검색 도우미...",
|
||||
"sendPlaceholder": "채팅 내용 입력...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Qwen2.5-Math-7B를 기반으로 한 DeepSeek-R1 증류 모델로, 강화 학습과 콜드 스타트 데이터를 통해 추론 성능을 최적화하며, 오픈 소스 모델로 다중 작업 기준을 갱신합니다."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro는 새롭게 업그레이드된 다중 모달 대형 모델로, 임의의 해상도와 극단적인 가로 세로 비율의 이미지 인식을 지원하며, 시각적 추론, 문서 인식, 세부 정보 이해 및 지시 준수 능력을 강화했습니다."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite는 극한의 응답 속도와 더 나은 가격 대비 성능을 자랑하며, 고객의 다양한 상황에 유연한 선택을 제공합니다. 128k 컨텍스트 윈도우의 추론 및 세부 조정을 지원합니다."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "가장 효과적인 주력 모델로, 복잡한 작업 처리에 적합하며, 참고 질문, 요약, 창작, 텍스트 분류, 역할 수행 등 많은 장면에서 뛰어난 성과를 보입니다. 128k 컨텍스트 윈도우의 추론 및 세부 조정을 지원합니다."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "가장 효과적인 주력 모델로, 복잡한 작업 처리에 적합하며, 참고 질문 응답, 요약, 창작, 텍스트 분류, 역할 수행 등 다양한 상황에서 좋은 성과를 보입니다. 256k의 컨텍스트 윈도우 추론 및 미세 조정을 지원합니다."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "가장 효과적인 주력 모델로, 복잡한 작업 처리에 적합하며, 참고 질문, 요약, 창작, 텍스트 분류, 역할 수행 등 많은 장면에서 뛰어난 성과를 보입니다. 32k 컨텍스트 윈도우의 추론 및 세부 조정을 지원합니다."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "가장 효과적인 주력 모델로, 복잡한 작업 처리에 적합하며, 참고 질문, 요약, 창작, 텍스트 분류, 역할 수행 등 많은 장면에서 뛰어난 성과를 보입니다. 4k 컨텍스트 윈도우의 추론 및 세부 조정을 지원합니다."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Doubao-vision 모델은 Doubao에서 출시한 다중 모달 대형 모델로, 강력한 이미지 이해 및 추론 능력과 정확한 지시 이해 능력을 갖추고 있습니다. 이 모델은 이미지 텍스트 정보 추출 및 이미지 기반 추론 작업에서 강력한 성능을 보여주며, 더 복잡하고 넓은 시각적 질문 응답 작업에 적용될 수 있습니다."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Doubao-vision 모델은 Doubao에서 출시한 다중 모달 대형 모델로, 강력한 이미지 이해 및 추론 능력과 정확한 지시 이해 능력을 갖추고 있습니다. 이 모델은 이미지 텍스트 정보 추출 및 이미지 기반 추론 작업에서 강력한 성능을 보여주며, 더 복잡하고 넓은 시각적 질문 응답 작업에 적용될 수 있습니다."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "바이두가 자체 개발한 플래그십 대규모 언어 모델로, 방대한 중문 및 영문 코퍼스를 포함하고 있으며, 강력한 일반 능력을 갖추고 있어 대부분의 대화형 질문 응답, 창작 생성, 플러그인 응용 시나리오 요구를 충족할 수 있습니다. 또한 바이두 검색 플러그인과의 자동 연동을 지원하여 질문 응답 정보의 시의성을 보장합니다."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1은 극히 적은 주석 데이터로 모델의 추론 능력을 크게 향상시킵니다. 최종 답변을 출력하기 전에 모델은 먼저 사고의 연쇄 내용을 출력하여 최종 답변의 정확성을 높입니다."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite는 전혀 새로운 세대의 경량 모델로, 극한의 응답 속도를 자랑하며, 효과와 지연 모두 세계 최고 수준에 도달했습니다."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k는 Doubao-1.5-Pro의 전면 업그레이드 버전으로, 전체적인 효과가 10% 향상되었습니다. 256k의 컨텍스트 윈도우를 지원하며, 출력 길이는 최대 12k 토큰을 지원합니다. 더 높은 성능, 더 큰 윈도우, 뛰어난 가성비로 더 넓은 응용 분야에 적합합니다."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro는 전혀 새로운 세대의 주력 모델로, 성능이 전면적으로 업그레이드되어 지식, 코드, 추론 등 여러 분야에서 뛰어난 성능을 발휘합니다."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa는 심리 모델로, 전문 상담 능력을 갖추고 있어 사용자가 감정 문제를 이해하는 데 도움을 줍니다."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Kopie",
|
||||
"emptyAgent": "Geen assistent beschikbaar",
|
||||
"extendControls": {
|
||||
"title": "Modeluitbreidingsfuncties"
|
||||
},
|
||||
"historyRange": "Geschiedenisbereik",
|
||||
"historySummary": "Geschiedenis samenvatting",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Opnieuw genereren",
|
||||
"roleAndArchive": "Rol en archief",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Zoekwoorden",
|
||||
"title": "Er zijn {{count}} resultaten gevonden"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Intelligente beoordeling of er gezocht moet worden op basis van de gesprekinhoud",
|
||||
"title": "Slimme verbinding"
|
||||
},
|
||||
"disable": "Het huidige model ondersteunt geen functieaanroepen, dus de slimme verbindingsfunctie kan niet worden gebruikt",
|
||||
"off": {
|
||||
"desc": "Gebruik alleen de basiskennis van het model, zonder online zoekopdrachten",
|
||||
"title": "Verbinding uitschakelen"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Voortdurend online zoeken voor de nieuwste informatie",
|
||||
"title": "Altijd verbonden"
|
||||
},
|
||||
"useModelBuiltin": "Gebruik de ingebouwde zoekmachine van het model"
|
||||
},
|
||||
"title": "Online zoeken"
|
||||
},
|
||||
"searchAgentPlaceholder": "Zoekassistent...",
|
||||
"sendPlaceholder": "Voer chatbericht in...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "DeepSeek-R1 distillatiemodel gebaseerd op Qwen2.5-Math-7B, geoptimaliseerd voor inferentieprestaties door versterkend leren en koude startdata, open-source model dat de multi-taak benchmark vernieuwt."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro is een nieuw geüpgraded multimodaal groot model, dat ondersteuning biedt voor beeldherkenning met willekeurige resoluties en extreme beeldverhoudingen, en de visuele redenering, documentherkenning, begrip van gedetailleerde informatie en het volgen van instructies verbetert."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite beschikt over een uitstekende responssnelheid en een goede prijs-kwaliteitverhouding, en biedt klanten flexibele keuzes voor verschillende scenario's. Ondersteunt inferentie en fine-tuning met een contextvenster van 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Het meest effectieve hoofmodel, geschikt voor het verwerken van complexe taken, met goede resultaten in referentievraag, samenvattingen, creatie, tekstclassificatie, rollenspellen en meer. Ondersteunt inferentie en fine-tuning met een contextvenster van 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Het beste hoofdmachine model, geschikt voor het verwerken van complexe taken, met goede prestaties in referentievraag- en antwoordsituaties, samenvattingen, creatie, tekstclassificatie, rollenspellen, enz. Ondersteunt redenering en fine-tuning met een contextvenster van 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Het meest effectieve hoofmodel, geschikt voor het verwerken van complexe taken, met goede resultaten in referentievraag, samenvattingen, creatie, tekstclassificatie, rollenspellen en meer. Ondersteunt inferentie en fine-tuning met een contextvenster van 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Het meest effectieve hoofmodel, geschikt voor het verwerken van complexe taken, met goede resultaten in referentievraag, samenvattingen, creatie, tekstclassificatie, rollenspellen en meer. Ondersteunt inferentie en fine-tuning met een contextvenster van 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Het Doubao-vision model is een multimodaal groot model dat door Doubao is geïntroduceerd, met krachtige mogelijkheden voor beeldbegrip en redenering, evenals nauwkeurige instructiebegrip. Het model heeft sterke prestaties getoond in het extraheren van tekstinformatie uit afbeeldingen en op afbeeldingen gebaseerde redeneringstaken, en kan worden toegepast op complexere en bredere visuele vraag- en antwoordsituaties."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Het Doubao-vision model is een multimodaal groot model dat door Doubao is geïntroduceerd, met krachtige mogelijkheden voor beeldbegrip en redenering, evenals nauwkeurige instructiebegrip. Het model heeft sterke prestaties getoond in het extraheren van tekstinformatie uit afbeeldingen en op afbeeldingen gebaseerde redeneringstaken, en kan worden toegepast op complexere en bredere visuele vraag- en antwoordsituaties."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "De door Baidu ontwikkelde vlaggenschip grote taalmodel, dat een enorme hoeveelheid Chinese en Engelse gegevens dekt, met krachtige algemene capaciteiten die voldoen aan de meeste eisen voor dialoogvragen, creatieve generatie en plug-in toepassingsscenario's; ondersteunt automatische integratie met de Baidu zoekplug-in, wat de actualiteit van vraag- en antwoordinformatie waarborgt."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 heeft de redeneringscapaciteiten van het model aanzienlijk verbeterd, zelfs met zeer weinig gelabelde gegevens. Voordat het model het uiteindelijke antwoord geeft, genereert het eerst een denkproces om de nauwkeurigheid van het uiteindelijke antwoord te verbeteren."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite is de nieuwste generatie lichtgewicht model, met extreme responssnelheid en prestaties die wereldwijd tot de top behoren."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k is een uitgebreide upgrade van Doubao-1.5-Pro, met een algehele prestatieverbetering van 10%. Ondersteunt redenering met een contextvenster van 256k en een maximale uitvoerlengte van 12k tokens. Hogere prestaties, groter venster, uitstekende prijs-kwaliteitverhouding, geschikt voor een breder scala aan toepassingsscenario's."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro is de nieuwste generatie hoofdmachine, met algehele prestatie-upgrades en uitstekende prestaties op het gebied van kennis, code, redenering, enz."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa is een psychologisch model met professionele adviescapaciteiten, dat gebruikers helpt emotionele problemen te begrijpen."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} kopia",
|
||||
"emptyAgent": "Brak asystenta",
|
||||
"extendControls": {
|
||||
"title": "Funkcje rozszerzenia modelu"
|
||||
},
|
||||
"historyRange": "Zakres historii",
|
||||
"historySummary": "Podsumowanie wiadomości historycznych",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Wygeneruj ponownie",
|
||||
"roleAndArchive": "Rola i archiwum",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Szukaj słów kluczowych",
|
||||
"title": "Znaleziono {{count}} wyników"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Inteligentne określenie, czy potrzebne jest wyszukiwanie na podstawie treści rozmowy",
|
||||
"title": "Inteligentne połączenie"
|
||||
},
|
||||
"disable": "Aktualny model nie obsługuje wywołań funkcji, więc nie można korzystać z inteligentnego połączenia",
|
||||
"off": {
|
||||
"desc": "Używaj tylko podstawowej wiedzy modelu, bez wyszukiwania w sieci",
|
||||
"title": "Wyłącz połączenie"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Ciągłe wyszukiwanie w sieci, aby uzyskać najnowsze informacje",
|
||||
"title": "Zawsze połączony"
|
||||
},
|
||||
"useModelBuiltin": "Użyj wbudowanej wyszukiwarki modelu"
|
||||
},
|
||||
"title": "Wyszukiwanie w sieci"
|
||||
},
|
||||
"searchAgentPlaceholder": "Wyszukaj pomocnika...",
|
||||
"sendPlaceholder": "Wpisz treść rozmowy...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Model destylacyjny DeepSeek-R1 oparty na Qwen2.5-Math-7B, optymalizujący wydajność wnioskowania dzięki uczeniu przez wzmocnienie i danym z zimnego startu, otwarty model ustanawiający nowe standardy w wielu zadaniach."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro to nowa wersja ulepszonego modelu multimodalnego, który obsługuje rozpoznawanie obrazów o dowolnej rozdzielczości i ekstremalnych proporcjach, wzmacniając zdolności wnioskowania wizualnego, rozpoznawania dokumentów, rozumienia szczegółowych informacji oraz przestrzegania instrukcji."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite cechuje się ekstremalną szybkością reakcji i lepszym stosunkiem jakości do ceny, oferując klientom elastyczność w różnych scenariuszach. Obsługuje wnioskowanie i dostosowywanie z kontekstem 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Model o najlepszych wynikach, odpowiedni do złożonych zadań, z doskonałymi wynikami w scenariuszach takich jak odpowiedzi referencyjne, podsumowania, twórczość, klasyfikacja tekstu i odgrywanie ról. Obsługuje wnioskowanie i dostosowywanie z kontekstem 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Najlepszy model główny, odpowiedni do obsługi złożonych zadań, osiągający dobre wyniki w scenariuszach takich jak pytania i odpowiedzi, podsumowania, twórczość, klasyfikacja tekstu, odgrywanie ról itp. Obsługuje wnioskowanie i dostrajanie w kontekście 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Model o najlepszych wynikach, odpowiedni do złożonych zadań, z doskonałymi wynikami w scenariuszach takich jak odpowiedzi referencyjne, podsumowania, twórczość, klasyfikacja tekstu i odgrywanie ról. Obsługuje wnioskowanie i dostosowywanie z kontekstem 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Model o najlepszych wynikach, odpowiedni do złożonych zadań, z doskonałymi wynikami w scenariuszach takich jak odpowiedzi referencyjne, podsumowania, twórczość, klasyfikacja tekstu i odgrywanie ról. Obsługuje wnioskowanie i dostosowywanie z kontekstem 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Model Doubao-vision to multimodalny model stworzony przez Doubao, który dysponuje potężnymi zdolnościami rozumienia i wnioskowania obrazów oraz precyzyjnym rozumieniem instrukcji. Model wykazuje silną wydajność w zakresie ekstrakcji informacji tekstowych z obrazów oraz zadań wnioskowania opartych na obrazach, co pozwala na zastosowanie w bardziej złożonych i szerszych zadaniach wizualnych."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Model Doubao-vision to multimodalny model stworzony przez Doubao, który dysponuje potężnymi zdolnościami rozumienia i wnioskowania obrazów oraz precyzyjnym rozumieniem instrukcji. Model wykazuje silną wydajność w zakresie ekstrakcji informacji tekstowych z obrazów oraz zadań wnioskowania opartych na obrazach, co pozwala na zastosowanie w bardziej złożonych i szerszych zadaniach wizualnych."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Flagowy model dużego języka opracowany przez Baidu, obejmujący ogromne zbiory danych w języku chińskim i angielskim, charakteryzujący się silnymi zdolnościami ogólnymi, zdolny do spełnienia wymagań w większości scenariuszy związanych z pytaniami i odpowiedziami, generowaniem treści oraz aplikacjami wtyczek; wspiera automatyczne połączenie z wtyczką wyszukiwania Baidu, zapewniając aktualność informacji w odpowiedziach."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 znacznie poprawił zdolności wnioskowania modelu przy minimalnej ilości oznaczonych danych. Przed wygenerowaniem ostatecznej odpowiedzi, model najpierw wygeneruje fragment myślenia, aby zwiększyć dokładność końcowej odpowiedzi."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite to nowa generacja modelu o lekkiej konstrukcji, charakteryzująca się ekstremalną szybkością reakcji, osiągając światowy poziom zarówno w zakresie wydajności, jak i opóźnienia."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k to kompleksowa wersja ulepszona na bazie Doubao-1.5-Pro, która oferuje znaczny wzrost wydajności o 10%. Obsługuje wnioskowanie w kontekście 256k, a maksymalna długość wyjścia wynosi 12k tokenów. Wyższa wydajność, większe okno, doskonały stosunek jakości do ceny, odpowiedni do szerszego zakresu zastosowań."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro to nowa generacja głównego modelu, który oferuje kompleksowe ulepszenia wydajności, wykazując doskonałe wyniki w zakresie wiedzy, kodowania, wnioskowania i innych obszarów."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa to model psychologiczny, posiadający profesjonalne umiejętności doradcze, pomagający użytkownikom zrozumieć problemy emocjonalne."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Cópia",
|
||||
"emptyAgent": "Sem assistente disponível",
|
||||
"extendControls": {
|
||||
"title": "Funcionalidade de Extensão do Modelo"
|
||||
},
|
||||
"historyRange": "Intervalo de Histórico",
|
||||
"historySummary": "Resumo das mensagens históricas",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Regenerar",
|
||||
"roleAndArchive": "Função e Arquivo",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Palavras-chave de pesquisa",
|
||||
"title": "Foram encontrados {{count}} resultados"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Determina inteligentemente se é necessário pesquisar com base no conteúdo da conversa",
|
||||
"title": "Conexão Inteligente"
|
||||
},
|
||||
"disable": "O modelo atual não suporta chamadas de função, portanto, a funcionalidade de conexão inteligente não está disponível",
|
||||
"off": {
|
||||
"desc": "Usa apenas o conhecimento básico do modelo, sem realizar pesquisas na web",
|
||||
"title": "Desativar Conexão"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Realiza pesquisas contínuas na web para obter informações atualizadas",
|
||||
"title": "Sempre Conectado"
|
||||
},
|
||||
"useModelBuiltin": "Usar o mecanismo de busca embutido no modelo"
|
||||
},
|
||||
"title": "Pesquisa Conectada"
|
||||
},
|
||||
"searchAgentPlaceholder": "Assistente de busca...",
|
||||
"sendPlaceholder": "Digite a mensagem...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Modelo de destilação DeepSeek-R1 baseado no Qwen2.5-Math-7B, otimizado para desempenho de inferência através de aprendizado por reforço e dados de inicialização fria, modelo de código aberto que redefine os padrões de múltiplas tarefas."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro é um modelo multimodal de grande porte totalmente atualizado, que suporta reconhecimento de imagens em qualquer resolução e proporções extremas, melhorando a capacidade de raciocínio visual, reconhecimento de documentos, compreensão de informações detalhadas e seguimento de instruções."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite possui uma velocidade de resposta excepcional e uma melhor relação custo-benefício, oferecendo opções mais flexíveis para diferentes cenários dos clientes. Suporta raciocínio e ajuste fino em janelas de contexto de 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "O modelo principal com o melhor desempenho, adequado para tarefas complexas, apresentando excelentes resultados em cenários como perguntas e respostas, resumos, criação, classificação de texto e interpretação de papéis. Suporta raciocínio e ajuste fino em janelas de contexto de 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "O modelo principal com o melhor desempenho, adequado para lidar com tarefas complexas, apresentando bons resultados em cenários como perguntas e respostas de referência, resumos, criação, classificação de texto e interpretação de papéis. Suporta raciocínio e ajuste fino com janelas de contexto de 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "O modelo principal com o melhor desempenho, adequado para tarefas complexas, apresentando excelentes resultados em cenários como perguntas e respostas, resumos, criação, classificação de texto e interpretação de papéis. Suporta raciocínio e ajuste fino em janelas de contexto de 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "O modelo principal com o melhor desempenho, adequado para tarefas complexas, apresentando excelentes resultados em cenários como perguntas e respostas, resumos, criação, classificação de texto e interpretação de papéis. Suporta raciocínio e ajuste fino em janelas de contexto de 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "O modelo Doubao-vision é um modelo multimodal de grande porte lançado pela Doubao, com poderosas capacidades de compreensão e raciocínio de imagens, além de uma compreensão precisa de instruções. O modelo demonstrou um desempenho robusto em extração de informações textuais de imagens e tarefas de raciocínio baseadas em imagens, podendo ser aplicado em tarefas de perguntas e respostas visuais mais complexas e abrangentes."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "O modelo Doubao-vision é um modelo multimodal de grande porte lançado pela Doubao, com poderosas capacidades de compreensão e raciocínio de imagens, além de uma compreensão precisa de instruções. O modelo demonstrou um desempenho robusto em extração de informações textuais de imagens e tarefas de raciocínio baseadas em imagens, podendo ser aplicado em tarefas de perguntas e respostas visuais mais complexas e abrangentes."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Modelo de linguagem de grande escala desenvolvido pela Baidu, cobrindo uma vasta quantidade de dados em chinês e inglês, com poderosas capacidades gerais, capaz de atender à maioria das demandas de perguntas e respostas em diálogos, geração de conteúdo e aplicações de plugins; suporta integração automática com o plugin de busca da Baidu, garantindo a atualidade das informações nas respostas."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 melhorou significativamente a capacidade de raciocínio do modelo com muito poucos dados rotulados. Antes de fornecer a resposta final, o modelo gera uma cadeia de pensamento para aumentar a precisão da resposta final."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite é a nova geração de modelo leve, com velocidade de resposta extrema, alcançando níveis de desempenho e latência de classe mundial."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k é uma versão totalmente aprimorada do Doubao-1.5-Pro, com um aumento significativo de 10% no desempenho geral. Suporta raciocínio com janelas de contexto de 256k e um comprimento de saída de até 12k tokens. Maior desempenho, janelas maiores e excelente custo-benefício, adequado para uma ampla gama de cenários de aplicação."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro é a nova geração de modelo principal, com desempenho totalmente aprimorado, destacando-se em conhecimento, código, raciocínio, entre outros aspectos."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "O Emohaa é um modelo psicológico com capacidade de consultoria profissional, ajudando os usuários a entender questões emocionais."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Копия",
|
||||
"emptyAgent": "Нет ассистента",
|
||||
"extendControls": {
|
||||
"title": "Функции расширения модели"
|
||||
},
|
||||
"historyRange": "История сообщений",
|
||||
"historySummary": "Сводка исторических сообщений",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Сгенерировать заново",
|
||||
"roleAndArchive": "Роль и архив",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Поисковые ключевые слова",
|
||||
"title": "Найдено {{count}} результатов"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Интеллектуально определяет необходимость поиска на основе содержания диалога",
|
||||
"title": "Интеллектуальное подключение к сети"
|
||||
},
|
||||
"disable": "Текущая модель не поддерживает вызовы функций, поэтому функция интеллектуального подключения к сети недоступна",
|
||||
"off": {
|
||||
"desc": "Использует только базовые знания модели, без сетевого поиска",
|
||||
"title": "Отключить подключение к сети"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Постоянно выполняет сетевой поиск для получения актуальной информации",
|
||||
"title": "Всегда подключен к сети"
|
||||
},
|
||||
"useModelBuiltin": "Использовать встроенный поисковый движок модели"
|
||||
},
|
||||
"title": "Поиск в сети"
|
||||
},
|
||||
"searchAgentPlaceholder": "Поиск помощника...",
|
||||
"sendPlaceholder": "Введите сообщение...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Модель DeepSeek-R1, основанная на Qwen2.5-Math-7B, оптимизирует производительность вывода с помощью усиленного обучения и данных холодного старта, обновляя стандарт многозадачности в открытых моделях."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro - совершенно обновленная многомодальная большая модель, поддерживающая распознавание изображений с любым разрешением и экстремальными соотношениями сторон, улучшенная способность визуального вывода, распознавания документов, понимания деталей и соблюдения инструкций."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite обеспечивает выдающуюся скорость отклика и лучшее соотношение цены и качества, предлагая клиентам больше гибкости в различных сценариях. Поддерживает вывод и настройку с 128k контекстным окном."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Модель основных характеристик с лучшими показателями, подходит для обработки сложных задач. Хорошо справляется с задачами референсного ответа, резюмирования, творчества, классификации текста, ролевого взаимодействия и т.д. Поддерживает вывод и настройку с 128k контекстным окном."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Лучшая модель для основных задач, подходит для обработки сложных задач, демонстрирует отличные результаты в таких сценариях, как ответ на вопросы, резюмирование, творчество, классификация текста и ролевые игры. Поддерживает вывод на 256k контекстных окнах и тонкую настройку."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Модель основных характеристик с лучшими показателями, подходит для обработки сложных задач. Хорошо справляется с задачами референсного ответа, резюмирования, творчества, классификации текста, ролевого взаимодействия и т.д. Поддерживает вывод и настройку с 32k контекстным окном."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Модель основных характеристик с лучшими показателями, подходит для обработки сложных задач. Хорошо справляется с задачами референсного ответа, резюмирования, творчества, классификации текста, ролевого взаимодействия и т.д. Поддерживает вывод и настройку с 4k контекстным окном."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Модель Doubao-vision - это многомодальная большая модель, представленная Doubao, обладающая мощными способностями понимания и вывода изображений, а также точным пониманием инструкций. Модель демонстрирует выдающуюся производительность в извлечении текстовой информации из изображений и задачах вывода на основе изображений, что позволяет применять ее в более сложных и широких задачах визуального вопроса и ответа."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Модель Doubao-vision - это многомодальная большая модель, представленная Doubao, обладающая мощными способностями понимания и вывода изображений, а также точным пониманием инструкций. Модель демонстрирует выдающуюся производительность в извлечении текстовой информации из изображений и задачах вывода на основе изображений, что позволяет применять ее в более сложных и широких задачах визуального вопроса и ответа."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Флагманская крупномасштабная языковая модель, разработанная Baidu, охватывающая огромные объемы китайских и английских текстов, обладающая мощными универсальными возможностями, способная удовлетворить большинство требований к диалоговым ответам, генерации контента и сценариям использования плагинов; поддерживает автоматическую интеграцию с плагином поиска Baidu, обеспечивая актуальность информации в ответах."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 значительно улучшила способности модели к рассуждению при наличии лишь очень ограниченных размеченных данных. Перед тем как предоставить окончательный ответ, модель сначала выводит цепочку размышлений, чтобы повысить точность окончательного ответа."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite - совершенно новое поколение легкой модели, с максимальной скоростью отклика, результаты и задержка достигают мирового уровня."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k основан на полностью обновленной версии Doubao-1.5-Pro, с общим улучшением на 10%. Поддерживает вывод на 256k контекстных окнах, максимальная длина вывода составляет 12k токенов. Более высокая производительность, большее окно, отличное соотношение цена-качество, подходит для более широкого спектра приложений."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro - совершенно новое поколение основного модели, с полностью обновленной производительностью, выдающимися результатами в области знаний, кода, логики и других аспектов."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa — это психологическая модель, обладающая профессиональными консультационными способностями, помогающая пользователям понимать эмоциональные проблемы."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Kopya",
|
||||
"emptyAgent": "Asistan yok",
|
||||
"extendControls": {
|
||||
"title": "Model Genişletme Özellikleri"
|
||||
},
|
||||
"historyRange": "Geçmiş Aralığı",
|
||||
"historySummary": "Tarihsel haber özeti",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Tekrarla",
|
||||
"roleAndArchive": "Rol ve Arşiv",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Arama Anahtar Kelimeleri",
|
||||
"title": "{{count}} sonuç bulundu"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Sohbet içeriğine göre akıllıca arama gerekip gerekmediğini belirler",
|
||||
"title": "Akıllı Bağlantı"
|
||||
},
|
||||
"disable": "Mevcut model fonksiyon çağrısını desteklemediği için akıllı bağlantı özelliği kullanılamaz",
|
||||
"off": {
|
||||
"desc": "Sadece modelin temel bilgilerini kullanır, ağ araması yapmaz",
|
||||
"title": "Bağlantıyı Kapat"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Sürekli ağ araması yaparak en güncel bilgileri alır",
|
||||
"title": "Her Zaman Bağlantıda"
|
||||
},
|
||||
"useModelBuiltin": "Modelin yerleşik arama motorunu kullan"
|
||||
},
|
||||
"title": "Ağ Araması"
|
||||
},
|
||||
"searchAgentPlaceholder": "Arama Asistanı...",
|
||||
"sendPlaceholder": "Mesajınızı buraya yazın...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Qwen2.5-Math-7B temel alınarak oluşturulmuş DeepSeek-R1 damıtma modeli, pekiştirme öğrenimi ve soğuk başlatma verileri ile çıkarım performansını optimize eder, açık kaynak model çoklu görev standartlarını yeniler."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro, tamamen yenilenen çok modlu büyük modeldir, herhangi bir çözünürlük ve aşırı en-boy oranına sahip görüntü tanıma desteği sunar, görsel akıl yürütme, belge tanıma, detay bilgisi anlama ve talimatları takip etme yeteneklerini artırır."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite, mükemmel yanıt hızı ve daha iyi maliyet Performansı ile müşterilere farklı senaryolar için daha esnek seçenekler sunar. 128k bağlam penceresi çıkarım ve ince ayar destekler."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "En iyi performans gösteren ana model, karmaşık görevleri işlemek için uygundur; referanslı soru-cevap, özetleme, yaratım, metin sınıflandırma, rol yapma gibi senaryolar için iyi sonuçlar verir. 128k bağlam penceresi çıkarım ve ince ayar destekler."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "En iyi performansa sahip ana modeldir, karmaşık görevleri işlemek için uygundur, referans cevaplama, özetleme, yaratım, metin sınıflandırma, rol oynama gibi senaryolarda oldukça iyi sonuçlar vermektedir. 256k bağlam penceresi ile akıl yürütme ve ince ayar desteği sunmaktadır."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "En iyi performans gösteren ana model, karmaşık görevleri işlemek için uygundur; referanslı soru-cevap, özetleme, yaratım, metin sınıflandırma, rol yapma gibi senaryolar için iyi sonuçlar verir. 32k bağlam penceresi çıkarım ve ince ayar destekler."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "En iyi performans gösteren ana model, karmaşık görevleri işlemek için uygundur; referanslı soru-cevap, özetleme, yaratım, metin sınıflandırma, rol yapma gibi senaryolar için iyi sonuçlar verir. 4k bağlam penceresi çıkarım ve ince ayar destekler."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Doubao-vision modeli, Doubao tarafından sunulan çok modlu büyük modeldir, güçlü görüntü anlama ve akıl yürütme yeteneklerine sahip olup, kesin talimat anlama yeteneği sunmaktadır. Model, görüntü metin bilgisi çıkarımı ve görüntü tabanlı akıl yürütme görevlerinde güçlü bir performans sergilemekte, daha karmaşık ve daha geniş görsel soru-cevap görevlerine uygulanabilmektedir."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Doubao-vision modeli, Doubao tarafından sunulan çok modlu büyük modeldir, güçlü görüntü anlama ve akıl yürütme yeteneklerine sahip olup, kesin talimat anlama yeteneği sunmaktadır. Model, görüntü metin bilgisi çıkarımı ve görüntü tabanlı akıl yürütme görevlerinde güçlü bir performans sergilemekte, daha karmaşık ve daha geniş görsel soru-cevap görevlerine uygulanabilmektedir."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Baidu'nun kendi geliştirdiği, büyük ölçekli bir dil modeli olan ERNIE-3.5, geniş bir Çin ve İngilizce veri kümesini kapsar. Güçlü genel yeteneklere sahip olup, çoğu diyalog, soru-cevap, yaratıcı içerik üretimi ve eklenti uygulama senaryolarını karşılayabilir; ayrıca, Baidu arama eklentisi ile otomatik entegrasyonu destekleyerek, soru-cevap bilgilerinin güncelliğini sağlar."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1, yalnızca çok az etiketli veri ile modelin akıl yürütme yeteneğini büyük ölçüde artırır. Model, nihai yanıtı vermeden önce bir düşünce zinciri içeriği sunarak nihai yanıtın doğruluğunu artırır."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite, tamamen yeni nesil hafif modeldir, olağanüstü yanıt hızı ile etkisi ve gecikmesi dünya standartlarında bir seviyeye ulaşmıştır."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k, Doubao-1.5-Pro'nun kapsamlı bir yükseltmesi olup, genel performans %10 oranında büyük bir artış göstermektedir. 256k bağlam penceresi ile akıl yürütmeyi destekler, çıktı uzunluğu maksimum 12k token'a kadar desteklenmektedir. Daha yüksek performans, daha büyük pencere, yüksek maliyet etkinliği ile daha geniş uygulama alanlarına uygundur."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro, tamamen yeni nesil ana model, performansı tamamen yükseltilmiş olup, bilgi, kod, akıl yürütme gibi alanlarda mükemmel bir performans sergilemektedir."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa, duygusal sorunları anlamalarına yardımcı olmak için profesyonel danışmanlık yeteneklerine sahip bir psikolojik modeldir."
|
||||
},
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} Bản sao",
|
||||
"emptyAgent": "Không có trợ lý",
|
||||
"extendControls": {
|
||||
"title": "Chức năng mở rộng mô hình"
|
||||
},
|
||||
"historyRange": "Phạm vi lịch sử",
|
||||
"historySummary": "Tóm tắt tin tức lịch sử",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "Tạo lại",
|
||||
"roleAndArchive": "Vai trò và lưu trữ",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "Từ khóa tìm kiếm",
|
||||
"title": "Đã tìm thấy {{count}} kết quả"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "Thông minh xác định xem có cần tìm kiếm dựa trên nội dung cuộc trò chuyện",
|
||||
"title": "Kết nối thông minh"
|
||||
},
|
||||
"disable": "Mô hình hiện tại không hỗ trợ gọi hàm, do đó không thể sử dụng chức năng kết nối thông minh",
|
||||
"off": {
|
||||
"desc": "Chỉ sử dụng kiến thức cơ bản của mô hình, không thực hiện tìm kiếm trên mạng",
|
||||
"title": "Tắt kết nối"
|
||||
},
|
||||
"on": {
|
||||
"desc": "Tiếp tục tìm kiếm trên mạng để có thông tin mới nhất",
|
||||
"title": "Luôn kết nối"
|
||||
},
|
||||
"useModelBuiltin": "Sử dụng công cụ tìm kiếm tích hợp của mô hình"
|
||||
},
|
||||
"title": "Tìm kiếm trực tuyến"
|
||||
},
|
||||
"searchAgentPlaceholder": "Trợ lý tìm kiếm...",
|
||||
"sendPlaceholder": "Nhập nội dung trò chuyện...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "Mô hình chưng cất DeepSeek-R1 dựa trên Qwen2.5-Math-7B, tối ưu hóa hiệu suất suy luận thông qua học tăng cường và dữ liệu khởi động lạnh, mô hình mã nguồn mở làm mới tiêu chuẩn đa nhiệm."
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro là mô hình lớn đa phương thức được nâng cấp hoàn toàn, hỗ trợ nhận diện hình ảnh với bất kỳ độ phân giải nào và tỷ lệ dài rộng cực đoan, tăng cường khả năng suy luận thị giác, nhận diện tài liệu, hiểu thông tin chi tiết và tuân thủ chỉ dẫn."
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite có tốc độ phản hồi cực nhanh, giá trị tốt hơn, cung cấp sự lựa chọn linh hoạt cho khách hàng trong nhiều tình huống khác nhau. Hỗ trợ suy diễn và tinh chỉnh trong ngữ cảnh 128k."
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "Mô hình chính có hiệu quả tốt nhất, phù hợp để xử lý các nhiệm vụ phức tạp, có hiệu quả tốt trong các tình huống như hỏi đáp tham khảo, tóm tắt, sáng tác, phân loại văn bản, và nhập vai. Hỗ trợ suy diễn và tinh chỉnh trong ngữ cảnh 128k."
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "Mô hình chủ lực có hiệu quả tốt nhất, phù hợp để xử lý các nhiệm vụ phức tạp, có hiệu quả tốt trong các tình huống như hỏi đáp tham khảo, tóm tắt, sáng tác, phân loại văn bản, và nhập vai. Hỗ trợ suy luận và tinh chỉnh với cửa sổ ngữ cảnh 256k."
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "Mô hình chính có hiệu quả tốt nhất, phù hợp để xử lý các nhiệm vụ phức tạp, có hiệu quả tốt trong các tình huống như hỏi đáp tham khảo, tóm tắt, sáng tác, phân loại văn bản, và nhập vai. Hỗ trợ suy diễn và tinh chỉnh trong ngữ cảnh 32k."
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "Mô hình chính có hiệu quả tốt nhất, phù hợp để xử lý các nhiệm vụ phức tạp, có hiệu quả tốt trong các tình huống như hỏi đáp tham khảo, tóm tắt, sáng tác, phân loại văn bản, và nhập vai. Hỗ trợ suy diễn và tinh chỉnh trong ngữ cảnh 4k."
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Mô hình Doubao-vision là mô hình lớn đa phương thức do Doubao phát triển, có khả năng hiểu và suy luận hình ảnh mạnh mẽ, cũng như khả năng hiểu chỉ dẫn chính xác. Mô hình thể hiện hiệu suất mạnh mẽ trong việc trích xuất thông tin văn bản từ hình ảnh và các nhiệm vụ suy luận dựa trên hình ảnh, có thể áp dụng cho các nhiệm vụ hỏi đáp thị giác phức tạp và đa dạng hơn."
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Mô hình Doubao-vision là mô hình lớn đa phương thức do Doubao phát triển, có khả năng hiểu và suy luận hình ảnh mạnh mẽ, cũng như khả năng hiểu chỉ dẫn chính xác. Mô hình thể hiện hiệu suất mạnh mẽ trong việc trích xuất thông tin văn bản từ hình ảnh và các nhiệm vụ suy luận dựa trên hình ảnh, có thể áp dụng cho các nhiệm vụ hỏi đáp thị giác phức tạp và đa dạng hơn."
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "Mô hình ngôn ngữ quy mô lớn hàng đầu do Baidu tự phát triển, bao phủ một lượng lớn tài liệu tiếng Trung và tiếng Anh, có khả năng tổng quát mạnh mẽ, có thể đáp ứng hầu hết các yêu cầu về đối thoại, hỏi đáp, sáng tạo nội dung và các tình huống ứng dụng plugin; hỗ trợ tự động kết nối với plugin tìm kiếm của Baidu, đảm bảo thông tin hỏi đáp luôn được cập nhật kịp thời."
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 đã nâng cao khả năng suy luận của mô hình một cách đáng kể với rất ít dữ liệu được gán nhãn. Trước khi đưa ra câu trả lời cuối cùng, mô hình sẽ xuất ra một chuỗi suy nghĩ để nâng cao độ chính xác của câu trả lời cuối cùng."
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite là mô hình phiên bản nhẹ thế hệ mới, tốc độ phản hồi cực nhanh, hiệu quả và độ trễ đạt tiêu chuẩn hàng đầu thế giới."
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k là phiên bản nâng cấp toàn diện dựa trên Doubao-1.5-Pro, hiệu quả tổng thể tăng 10%. Hỗ trợ suy luận với cửa sổ ngữ cảnh 256k, độ dài đầu ra tối đa lên đến 12k tokens. Hiệu suất cao hơn, cửa sổ lớn hơn, giá trị vượt trội, phù hợp với nhiều ứng dụng khác nhau."
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro là mô hình chủ lực thế hệ mới, hiệu suất được nâng cấp toàn diện, thể hiện xuất sắc trong các lĩnh vực kiến thức, mã nguồn, suy luận, và nhiều hơn nữa."
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa là mô hình tâm lý, có khả năng tư vấn chuyên nghiệp, giúp người dùng hiểu các vấn đề cảm xúc."
|
||||
},
|
||||
|
||||
+27
-1
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} 副本",
|
||||
"emptyAgent": "暂无助手",
|
||||
"extendControls": {
|
||||
"title": "模型扩展功能"
|
||||
},
|
||||
"historyRange": "历史范围",
|
||||
"historySummary": "历史消息总结",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "重新生成",
|
||||
"roleAndArchive": "角色与记录",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "搜索关键词",
|
||||
"title": "已搜索到 {{count}} 个结果"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "根据对话内容智能判断是否需要搜索",
|
||||
"title": "智能联网"
|
||||
},
|
||||
"disable": "当前模型不支持函数调用,因此无法使用智能联网功能",
|
||||
"off": {
|
||||
"desc": "仅使用模型的基础知识,不进行网络搜索",
|
||||
"title": "关闭联网"
|
||||
},
|
||||
"on": {
|
||||
"desc": "持续进行网络搜索,获取最新信息",
|
||||
"title": "始终联网"
|
||||
},
|
||||
"useModelBuiltin": "使用模型内置搜索引擎"
|
||||
},
|
||||
"title": "联网搜索"
|
||||
},
|
||||
"searchAgentPlaceholder": "搜索助手...",
|
||||
"sendPlaceholder": "输入聊天内容...",
|
||||
"sessionGroup": {
|
||||
@@ -181,4 +207,4 @@
|
||||
}
|
||||
},
|
||||
"zenMode": "专注模式"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "基于 Qwen2.5-Math-7B 的 DeepSeek-R1 蒸馏模型,通过强化学习与冷启动数据优化推理性能,开源模型刷新多任务标杆。"
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro 全新升级的多模态大模型,支持任意分辨率和极端长宽比图像识别,增强视觉推理、文档识别、细节信息理解和指令遵循能力。"
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "拥有极致的响应速度,更好的性价比,为客户不同场景提供更灵活的选择。支持 128k 上下文窗口的推理和精调。"
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持 128k 上下文窗口的推理和精调。"
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持 256k 上下文窗口的推理和精调。"
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持 32k 上下文窗口的推理和精调。"
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "效果最好的主力模型,适合处理复杂任务,在参考问答、总结摘要、创作、文本分类、角色扮演等场景都有很好的效果。支持 4k 上下文窗口的推理和精调。"
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Doubao-vision 模型是豆包推出的多模态大模型,具备强大的图片理解与推理能力,以及精准的指令理解能力。模型在图像文本信息抽取、基于图像的推理任务上有展现出了强大的性能,能够应用于更复杂、更广泛的视觉问答任务。"
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Doubao-vision 模型是豆包推出的多模态大模型,具备强大的图片理解与推理能力,以及精准的指令理解能力。模型在图像文本信息抽取、基于图像的推理任务上有展现出了强大的性能,能够应用于更复杂、更广泛的视觉问答任务。"
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "百度自研的旗舰级大规模⼤语⾔模型,覆盖海量中英文语料,具有强大的通用能力,可满足绝大部分对话问答、创作生成、插件应用场景要求;支持自动对接百度搜索插件,保障问答信息时效。"
|
||||
},
|
||||
@@ -639,10 +651,10 @@
|
||||
"description": "DeepSeek-R1-Distill-Qwen-14B 是一个基于 Qwen2.5-14B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。"
|
||||
},
|
||||
"deepseek-r1-distill-qwen-32b": {
|
||||
"description": "DeepSeek-R1-Distill-Qwen-32B 是一个基于 Qwen2.5-32B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。"
|
||||
"description": "DeepSeek-R1-Distill 模型是在开源模型的基础上通过微调训练得到的,训练过程中使用了由 DeepSeek-R1 生成的样本数据。"
|
||||
},
|
||||
"deepseek-r1-distill-qwen-7b": {
|
||||
"description": "DeepSeek-R1-Distill-Qwen-7B 是一个基于 Qwen2.5-Math-7B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。"
|
||||
"description": "DeepSeek-R1-Distill 模型是在开源模型的基础上通过微调训练得到的,训练过程中使用了由 DeepSeek-R1 生成的样本数据。"
|
||||
},
|
||||
"deepseek-reasoner": {
|
||||
"description": "DeepSeek 推出的推理模型。在输出最终回答之前,模型会先输出一段思维链内容,以提升最终答案的准确性。"
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 在仅有极少标注数据的情况下,极大提升了模型推理能力。在输出最终回答之前,模型会先输出一段思维链内容,以提升最终答案的准确性。"
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite 全新一代轻量版模型,极致响应速度,效果与时延均达到全球一流水平。"
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k 基于 Doubao-1.5-Pro 全面升级版,整体效果大幅提升 10%。支持 256k 上下文窗口的推理,输出长度支持最大 12k tokens。更高性能、更大窗口、超高性价比,适用于更广泛的应用场景。"
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro 全新一代主力模型,性能全面升级,在知识、代码、推理、等方面表现卓越。"
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa 是心理模型,具备专业咨询能力,帮助用户理解情感问题。"
|
||||
},
|
||||
@@ -1575,10 +1596,10 @@
|
||||
"description": "支持搜索上下文的高级搜索产品,支持高级查询和跟进。"
|
||||
},
|
||||
"sonar-reasoning": {
|
||||
"description": "由 DeepSeek 推理模型提供支持的新 API 产品。"
|
||||
"description": "支持搜索上下文的高级搜索产品,支持高级查询和跟进。"
|
||||
},
|
||||
"sonar-reasoning-pro": {
|
||||
"description": "由 DeepSeek 推理模型提供支持的新 API 产品。"
|
||||
"description": "支持搜索上下文的高级搜索产品,支持高级查询和跟进。"
|
||||
},
|
||||
"step-1-128k": {
|
||||
"description": "平衡性能与成本,适合一般场景。"
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
},
|
||||
"duplicateTitle": "{{title}} 副本",
|
||||
"emptyAgent": "暫無助手",
|
||||
"extendControls": {
|
||||
"title": "模型擴展功能"
|
||||
},
|
||||
"historyRange": "歷史範圍",
|
||||
"historySummary": "歷史消息總結",
|
||||
"inbox": {
|
||||
@@ -84,6 +87,29 @@
|
||||
},
|
||||
"regenerate": "重新生成",
|
||||
"roleAndArchive": "角色與記錄",
|
||||
"search": {
|
||||
"grounding": {
|
||||
"searchQueries": "搜尋關鍵字",
|
||||
"title": "已搜尋到 {{count}} 個結果"
|
||||
},
|
||||
"mode": {
|
||||
"auto": {
|
||||
"desc": "根據對話內容智能判斷是否需要搜尋",
|
||||
"title": "智能連網"
|
||||
},
|
||||
"disable": "當前模型不支持函數調用,因此無法使用智能連網功能",
|
||||
"off": {
|
||||
"desc": "僅使用模型的基礎知識,不進行網路搜尋",
|
||||
"title": "關閉連網"
|
||||
},
|
||||
"on": {
|
||||
"desc": "持續進行網路搜尋,獲取最新資訊",
|
||||
"title": "始終連網"
|
||||
},
|
||||
"useModelBuiltin": "使用模型內建搜尋引擎"
|
||||
},
|
||||
"title": "連網搜尋"
|
||||
},
|
||||
"searchAgentPlaceholder": "搜尋助手...",
|
||||
"sendPlaceholder": "輸入聊天內容...",
|
||||
"sessionGroup": {
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"DeepSeek-R1-Distill-Qwen-7B": {
|
||||
"description": "基於 Qwen2.5-Math-7B 的 DeepSeek-R1 蒸餾模型,通過強化學習與冷啟動數據優化推理性能,開源模型刷新多任務標杆。"
|
||||
},
|
||||
"Doubao-1.5-vision-pro-32k": {
|
||||
"description": "Doubao-1.5-vision-pro 全新升級的多模態大模型,支持任意解析度和極端長寬比圖像識別,增強視覺推理、文檔識別、細節信息理解和指令遵循能力。"
|
||||
},
|
||||
"Doubao-lite-128k": {
|
||||
"description": "Doubao-lite 擁有極致的回應速度,更好的性價比,為客戶不同場景提供更靈活的選擇。支持 128k 上下文窗口的推理和精調。"
|
||||
},
|
||||
@@ -77,12 +80,21 @@
|
||||
"Doubao-pro-128k": {
|
||||
"description": "效果最好的主力模型,適合處理複雜任務,在參考問答、總結摘要、創作、文本分類、角色扮演等場景都有很好的效果。支持 128k 上下文窗口的推理和精調。"
|
||||
},
|
||||
"Doubao-pro-256k": {
|
||||
"description": "效果最好的主力模型,適合處理複雜任務,在參考問答、總結摘要、創作、文本分類、角色扮演等場景都有很好的效果。支持 256k 上下文窗口的推理和精調。"
|
||||
},
|
||||
"Doubao-pro-32k": {
|
||||
"description": "效果最好的主力模型,適合處理複雜任務,在參考問答、總結摘要、創作、文本分類、角色扮演等場景都有很好的效果。支持 32k 上下文窗口的推理和精調。"
|
||||
},
|
||||
"Doubao-pro-4k": {
|
||||
"description": "效果最好的主力模型,適合處理複雜任務,在參考問答、總結摘要、創作、文本分類、角色扮演等場景都有很好的效果。支持 4k 上下文窗口的推理和精調。"
|
||||
},
|
||||
"Doubao-vision-lite-32k": {
|
||||
"description": "Doubao-vision 模型是豆包推出的多模態大模型,具備強大的圖片理解與推理能力,以及精準的指令理解能力。模型在圖像文本信息抽取、基於圖像的推理任務上展現出強大的性能,能夠應用於更複雜、更廣泛的視覺問答任務。"
|
||||
},
|
||||
"Doubao-vision-pro-32k": {
|
||||
"description": "Doubao-vision 模型是豆包推出的多模態大模型,具備強大的圖片理解與推理能力,以及精準的指令理解能力。模型在圖像文本信息抽取、基於圖像的推理任務上展現出強大的性能,能夠應用於更複雜、更廣泛的視覺問答任務。"
|
||||
},
|
||||
"ERNIE-3.5-128K": {
|
||||
"description": "百度自研的旗艦級大規模語言模型,覆蓋海量中英文語料,具有強大的通用能力,可滿足絕大部分對話問答、創作生成、插件應用場景要求;支持自動對接百度搜索插件,保障問答信息時效。"
|
||||
},
|
||||
@@ -665,6 +677,15 @@
|
||||
"deepseek/deepseek-r1:free": {
|
||||
"description": "DeepSeek-R1 在僅有極少標註數據的情況下,極大提升了模型推理能力。在輸出最終回答之前,模型會先輸出一段思維鏈內容,以提升最終答案的準確性。"
|
||||
},
|
||||
"doubao-1.5-lite-32k": {
|
||||
"description": "Doubao-1.5-lite 全新一代輕量版模型,極致響應速度,效果與時延均達到全球一流水平。"
|
||||
},
|
||||
"doubao-1.5-pro-256k": {
|
||||
"description": "Doubao-1.5-pro-256k 基於 Doubao-1.5-Pro 全面升級版,整體效果大幅提升 10%。支持 256k 上下文窗口的推理,輸出長度支持最大 12k tokens。更高性能、更大窗口、超高性價比,適用於更廣泛的應用場景。"
|
||||
},
|
||||
"doubao-1.5-pro-32k": {
|
||||
"description": "Doubao-1.5-pro 全新一代主力模型,性能全面升級,在知識、程式碼、推理等方面表現卓越。"
|
||||
},
|
||||
"emohaa": {
|
||||
"description": "Emohaa是一個心理模型,具備專業諮詢能力,幫助用戶理解情感問題。"
|
||||
},
|
||||
|
||||
+1
@@ -12,6 +12,7 @@ import TextArea from './TextArea';
|
||||
|
||||
const leftActions = [
|
||||
'model',
|
||||
'search',
|
||||
'fileUpload',
|
||||
'knowledgeBase',
|
||||
'params',
|
||||
|
||||
@@ -24,6 +24,7 @@ const googleChatModels: AIChatModelCard[] = [
|
||||
{
|
||||
abilities: {
|
||||
functionCall: true,
|
||||
search: true,
|
||||
vision: true,
|
||||
},
|
||||
contextWindowTokens: 1_048_576 + 8192,
|
||||
@@ -39,6 +40,10 @@ const googleChatModels: AIChatModelCard[] = [
|
||||
output: 0.4,
|
||||
},
|
||||
releasedAt: '2025-02-05',
|
||||
settings: {
|
||||
searchImpl: 'params',
|
||||
searchProvider: 'google',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
@@ -58,6 +63,9 @@ const googleChatModels: AIChatModelCard[] = [
|
||||
output: 0.4,
|
||||
},
|
||||
releasedAt: '2025-02-05',
|
||||
settings: {
|
||||
searchImpl: 'params',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
|
||||
@@ -16,6 +16,9 @@ const jinaChatModels: AIChatModelCard[] = [
|
||||
input: 0.02,
|
||||
output: 0.02,
|
||||
},
|
||||
settings: {
|
||||
searchImpl: 'internal',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
];
|
||||
|
||||
@@ -7,11 +7,14 @@ const perplexityChatModels: AIChatModelCard[] = [
|
||||
search: true,
|
||||
},
|
||||
contextWindowTokens: 127_072,
|
||||
description: '由 DeepSeek 推理模型提供支持的新 API 产品。',
|
||||
description: '支持搜索上下文的高级搜索产品,支持高级查询和跟进。',
|
||||
displayName: 'Sonar Reasoning Pro',
|
||||
enabled: true,
|
||||
id: 'sonar-reasoning-pro',
|
||||
maxOutput: 8192,
|
||||
settings: {
|
||||
searchImpl: 'internal',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
@@ -20,11 +23,14 @@ const perplexityChatModels: AIChatModelCard[] = [
|
||||
search: true,
|
||||
},
|
||||
contextWindowTokens: 127_072,
|
||||
description: '由 DeepSeek 推理模型提供支持的新 API 产品。',
|
||||
description: '支持搜索上下文的高级搜索产品,支持高级查询和跟进。',
|
||||
displayName: 'Sonar Reasoning',
|
||||
enabled: true,
|
||||
id: 'sonar-reasoning',
|
||||
maxOutput: 8192,
|
||||
settings: {
|
||||
searchImpl: 'internal',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
@@ -36,6 +42,9 @@ const perplexityChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Sonar Pro',
|
||||
enabled: true,
|
||||
id: 'sonar-pro',
|
||||
settings: {
|
||||
searchImpl: 'internal',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
@@ -47,6 +56,9 @@ const perplexityChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Sonar',
|
||||
enabled: true,
|
||||
id: 'sonar',
|
||||
settings: {
|
||||
searchImpl: 'internal',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
// The following will be deprecated on 02-22
|
||||
|
||||
+91
-37
@@ -1,9 +1,12 @@
|
||||
import { AIChatModelCard } from '@/types/aiModel';
|
||||
|
||||
// https://help.aliyun.com/zh/model-studio/developer-reference/use-qwen-by-calling-api#e1fada1a719u7
|
||||
|
||||
const qwenChatModels: AIChatModelCard[] = [
|
||||
{
|
||||
abilities: {
|
||||
functionCall: true,
|
||||
search: true,
|
||||
},
|
||||
contextWindowTokens: 1_000_000,
|
||||
description: '通义千问超大规模语言模型,支持中文、英文等不同语言输入。',
|
||||
@@ -11,16 +14,21 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'qwen-turbo-latest',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0.3,
|
||||
output: 0.6,
|
||||
},
|
||||
settings: {
|
||||
searchImpl: 'params',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
functionCall: true,
|
||||
search: true,
|
||||
},
|
||||
contextWindowTokens: 131_072,
|
||||
description: '通义千问超大规模语言模型增强版,支持中文、英文等不同语言输入。',
|
||||
@@ -28,16 +36,21 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'qwen-plus-latest',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0.8,
|
||||
output: 2,
|
||||
},
|
||||
settings: {
|
||||
searchImpl: 'params',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
functionCall: true,
|
||||
search: true,
|
||||
},
|
||||
contextWindowTokens: 32_768,
|
||||
description:
|
||||
@@ -46,11 +59,15 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'qwen-max-latest',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 20,
|
||||
output: 60,
|
||||
},
|
||||
settings: {
|
||||
searchImpl: 'params',
|
||||
},
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
@@ -60,6 +77,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen Long',
|
||||
id: 'qwen-long',
|
||||
maxOutput: 6000,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0.5,
|
||||
@@ -78,6 +96,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'qwen-vl-plus-latest',
|
||||
maxOutput: 2048,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 1.5,
|
||||
@@ -96,6 +115,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'qwen-vl-max-latest',
|
||||
maxOutput: 2048,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 3,
|
||||
@@ -113,6 +133,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen VL OCR',
|
||||
id: 'qwen-vl-ocr-latest',
|
||||
maxOutput: 4096,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 5,
|
||||
@@ -126,6 +147,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen Math Turbo',
|
||||
id: 'qwen-math-turbo-latest',
|
||||
maxOutput: 3072,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 2,
|
||||
@@ -139,6 +161,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen Math Plus',
|
||||
id: 'qwen-math-plus-latest',
|
||||
maxOutput: 3072,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 4,
|
||||
@@ -152,6 +175,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen Coder Turbo',
|
||||
id: 'qwen-coder-turbo-latest',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 2,
|
||||
@@ -165,6 +189,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen Coder Plus',
|
||||
id: 'qwen-coder-plus-latest',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 3.5,
|
||||
@@ -182,6 +207,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'QwQ 32B Preview',
|
||||
id: 'qwq-32b-preview',
|
||||
maxOutput: 16_384,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 3.5,
|
||||
@@ -196,10 +222,12 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
vision: true,
|
||||
},
|
||||
contextWindowTokens: 32_768,
|
||||
description: 'QVQ模型是由 Qwen 团队开发的实验性研究模型,专注于提升视觉推理能力,尤其在数学推理领域。',
|
||||
description:
|
||||
'QVQ模型是由 Qwen 团队开发的实验性研究模型,专注于提升视觉推理能力,尤其在数学推理领域。',
|
||||
displayName: 'QVQ 72B Preview',
|
||||
id: 'qvq-72b-preview',
|
||||
maxOutput: 16_384,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 12,
|
||||
@@ -217,6 +245,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 7B',
|
||||
id: 'qwen2.5-7b-instruct',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0.5,
|
||||
@@ -233,6 +262,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 14B',
|
||||
id: 'qwen2.5-14b-instruct',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 1,
|
||||
@@ -249,6 +279,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 32B',
|
||||
id: 'qwen2.5-32b-instruct',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 3.5,
|
||||
@@ -265,6 +296,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 72B',
|
||||
id: 'qwen2.5-72b-instruct',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 4,
|
||||
@@ -281,6 +313,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 14B 1M',
|
||||
id: 'qwen2.5-14b-instruct-1m',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 1,
|
||||
@@ -295,6 +328,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 Math 7B',
|
||||
id: 'qwen2.5-math-7b-instruct',
|
||||
maxOutput: 3072,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 1,
|
||||
@@ -308,6 +342,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 Math 72B',
|
||||
id: 'qwen2.5-math-72b-instruct',
|
||||
maxOutput: 3072,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 4,
|
||||
@@ -321,6 +356,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 Coder 7B',
|
||||
id: 'qwen2.5-coder-7b-instruct',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 1,
|
||||
@@ -334,6 +370,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 Coder 32B',
|
||||
id: 'qwen2.5-coder-32b-instruct',
|
||||
maxOutput: 8192,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 3.5,
|
||||
@@ -349,6 +386,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
description: '以 Qwen-7B 语言模型初始化,添加图像模型,图像输入分辨率为448的预训练模型。',
|
||||
displayName: 'Qwen VL',
|
||||
id: 'qwen-vl-v1',
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
@@ -364,6 +402,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
description: '通义千问VL支持灵活的交互方式,包括多图、多轮问答、创作等能力的模型。',
|
||||
displayName: 'Qwen VL Chat',
|
||||
id: 'qwen-vl-chat-v1',
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
@@ -381,6 +420,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 VL 72B',
|
||||
id: 'qwen2.5-vl-72b-instruct',
|
||||
maxOutput: 2048,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 16,
|
||||
@@ -399,6 +439,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'Qwen2.5 VL 7B',
|
||||
id: 'qwen2.5-vl-7b-instruct',
|
||||
maxOutput: 2048,
|
||||
organization: 'Qwen',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 2,
|
||||
@@ -418,6 +459,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'deepseek-r1',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
@@ -437,6 +479,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
enabled: true,
|
||||
id: 'deepseek-v3',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
@@ -455,6 +498,7 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
displayName: 'DeepSeek R1 Distill Qwen 1.5B',
|
||||
id: 'deepseek-r1-distill-qwen-1.5b',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
@@ -464,84 +508,94 @@ const qwenChatModels: AIChatModelCard[] = [
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
reasoning: true
|
||||
reasoning: true,
|
||||
},
|
||||
contextWindowTokens: 131_072,
|
||||
description: "DeepSeek-R1-Distill-Qwen-7B 是一个基于 Qwen2.5-Math-7B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。",
|
||||
displayName: "DeepSeek R1 Distill Qwen 7B",
|
||||
id: "deepseek-r1-distill-qwen-7b",
|
||||
description:
|
||||
'DeepSeek-R1-Distill-Qwen-7B 是一个基于 Qwen2.5-Math-7B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。',
|
||||
displayName: 'DeepSeek R1 Distill Qwen 7B',
|
||||
id: 'deepseek-r1-distill-qwen-7b',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: "CNY",
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
output: 0
|
||||
output: 0,
|
||||
},
|
||||
type: "chat"
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
reasoning: true
|
||||
reasoning: true,
|
||||
},
|
||||
contextWindowTokens: 131_072,
|
||||
description: "DeepSeek-R1-Distill-Qwen-14B 是一个基于 Qwen2.5-14B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。",
|
||||
displayName: "DeepSeek R1 Distill Qwen 14B",
|
||||
id: "deepseek-r1-distill-qwen-14b",
|
||||
description:
|
||||
'DeepSeek-R1-Distill-Qwen-14B 是一个基于 Qwen2.5-14B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。',
|
||||
displayName: 'DeepSeek R1 Distill Qwen 14B',
|
||||
id: 'deepseek-r1-distill-qwen-14b',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: "CNY",
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
output: 0
|
||||
output: 0,
|
||||
},
|
||||
type: "chat"
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
reasoning: true
|
||||
reasoning: true,
|
||||
},
|
||||
contextWindowTokens: 131_072,
|
||||
description: "DeepSeek-R1-Distill-Qwen-32B 是一个基于 Qwen2.5-32B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。",
|
||||
displayName: "DeepSeek R1 Distill Qwen 32B",
|
||||
id: "deepseek-r1-distill-qwen-32b",
|
||||
description:
|
||||
'DeepSeek-R1-Distill-Qwen-32B 是一个基于 Qwen2.5-32B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。',
|
||||
displayName: 'DeepSeek R1 Distill Qwen 32B',
|
||||
id: 'deepseek-r1-distill-qwen-32b',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: "CNY",
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
output: 0
|
||||
output: 0,
|
||||
},
|
||||
type: "chat"
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
reasoning: true
|
||||
reasoning: true,
|
||||
},
|
||||
contextWindowTokens: 131_072,
|
||||
description: "DeepSeek-R1-Distill-Llama-8B 是一个基于 Llama-3.1-8B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。",
|
||||
displayName: "DeepSeek R1 Distill Llama 8B",
|
||||
id: "deepseek-r1-distill-llama-8b",
|
||||
description:
|
||||
'DeepSeek-R1-Distill-Llama-8B 是一个基于 Llama-3.1-8B 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。',
|
||||
displayName: 'DeepSeek R1 Distill Llama 8B',
|
||||
id: 'deepseek-r1-distill-llama-8b',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: "CNY",
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
output: 0
|
||||
output: 0,
|
||||
},
|
||||
type: "chat"
|
||||
type: 'chat',
|
||||
},
|
||||
{
|
||||
abilities: {
|
||||
reasoning: true
|
||||
reasoning: true,
|
||||
},
|
||||
contextWindowTokens: 131_072,
|
||||
description: "DeepSeek-R1-Distill-Llama-70B 是一个基于 Llama-3.3-70B-Instruct 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。",
|
||||
displayName: "DeepSeek R1 Distill Llama 70B",
|
||||
id: "deepseek-r1-distill-llama-70b",
|
||||
description:
|
||||
'DeepSeek-R1-Distill-Llama-70B 是一个基于 Llama-3.3-70B-Instruct 的蒸馏大型语言模型,使用了 DeepSeek R1 的输出。',
|
||||
displayName: 'DeepSeek R1 Distill Llama 70B',
|
||||
id: 'deepseek-r1-distill-llama-70b',
|
||||
maxOutput: 8192,
|
||||
organization: 'DeepSeek',
|
||||
pricing: {
|
||||
currency: "CNY",
|
||||
currency: 'CNY',
|
||||
input: 0,
|
||||
output: 0
|
||||
output: 0,
|
||||
},
|
||||
type: "chat"
|
||||
}
|
||||
type: 'chat',
|
||||
},
|
||||
];
|
||||
|
||||
export const allModels = [...qwenChatModels];
|
||||
|
||||
@@ -331,6 +331,7 @@ const OpenRouter: ModelProviderCard = {
|
||||
// https://github.com/lobehub/lobe-chat/issues/5900
|
||||
disableBrowserRequest: true,
|
||||
sdkType: 'openai',
|
||||
searchMode: 'params',
|
||||
showModelFetcher: true,
|
||||
},
|
||||
url: 'https://openrouter.ai',
|
||||
|
||||
@@ -153,7 +153,8 @@ const Qwen: ModelProviderCard = {
|
||||
},
|
||||
{
|
||||
contextWindowTokens: 32_768,
|
||||
description: 'QVQ模型是由 Qwen 团队开发的实验性研究模型,专注于提升视觉推理能力,尤其在数学推理领域。',
|
||||
description:
|
||||
'QVQ模型是由 Qwen 团队开发的实验性研究模型,专注于提升视觉推理能力,尤其在数学推理领域。',
|
||||
displayName: 'QVQ 72B Preview',
|
||||
id: 'qvq-72b-preview',
|
||||
pricing: {
|
||||
|
||||
@@ -20,6 +20,7 @@ export const DEFAULT_AGENT_CHAT_CONFIG: LobeAgentChatConfig = {
|
||||
enableCompressHistory: true,
|
||||
enableHistoryCount: true,
|
||||
historyCount: 8,
|
||||
searchMode: 'off',
|
||||
};
|
||||
|
||||
export const DEFAULT_AGENT_CONFIG: LobeAgentConfig = {
|
||||
|
||||
@@ -2,14 +2,11 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
|
||||
import { clientDB, initializeDB } from '@/database/client/db';
|
||||
import { AiProviderModel } from '@/database/server/models/aiProvider';
|
||||
import { LobeChatDatabase } from '@/database/type';
|
||||
import { AiProviderModelListItem } from '@/types/aiModel';
|
||||
import { AiProviderModelListItem, EnabledAiModel } from '@/types/aiModel';
|
||||
import {
|
||||
AiProviderDetailItem,
|
||||
AiProviderListItem,
|
||||
AiProviderRuntimeConfig,
|
||||
EnabledAiModel,
|
||||
EnabledProvider,
|
||||
} from '@/types/aiProvider';
|
||||
|
||||
|
||||
@@ -5,12 +5,16 @@ import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
|
||||
import { AiModelModel } from '@/database/server/models/aiModel';
|
||||
import { AiProviderModel } from '@/database/server/models/aiProvider';
|
||||
import { LobeChatDatabase } from '@/database/type';
|
||||
import { AIChatModelCard, AiModelSourceEnum, AiProviderModelListItem } from '@/types/aiModel';
|
||||
import {
|
||||
AIChatModelCard,
|
||||
AiModelSourceEnum,
|
||||
AiProviderModelListItem,
|
||||
EnabledAiModel,
|
||||
} from '@/types/aiModel';
|
||||
import {
|
||||
AiProviderDetailItem,
|
||||
AiProviderListItem,
|
||||
AiProviderRuntimeState,
|
||||
EnabledAiModel,
|
||||
EnabledProvider,
|
||||
} from '@/types/aiProvider';
|
||||
import { ProviderConfig } from '@/types/user/settings';
|
||||
|
||||
@@ -13,7 +13,8 @@ import {
|
||||
import { createSelectSchema } from 'drizzle-zod';
|
||||
|
||||
import { idGenerator } from '@/database/utils/idGenerator';
|
||||
import { GroundingSearch, ModelReasoning } from '@/types/message';
|
||||
import { ModelReasoning } from '@/types/message';
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
|
||||
import { timestamps } from './_helpers';
|
||||
import { agents } from './agent';
|
||||
|
||||
@@ -5,9 +5,9 @@ import {
|
||||
AiModelSortMap,
|
||||
AiModelSourceEnum,
|
||||
AiProviderModelListItem,
|
||||
EnabledAiModel,
|
||||
ToggleAiModelEnableParams,
|
||||
} from '@/types/aiModel';
|
||||
import { EnabledAiModel } from '@/types/aiProvider';
|
||||
|
||||
import { AiModelSelectItem, NewAiModelItem, aiModels } from '../../schemas';
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { and, asc, desc, eq } from 'drizzle-orm/expressions';
|
||||
import { isEmpty } from 'lodash-es';
|
||||
|
||||
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
|
||||
import { LobeChatDatabase } from '@/database/type';
|
||||
import { ModelProvider } from '@/libs/agent-runtime';
|
||||
import {
|
||||
@@ -10,6 +11,7 @@ import {
|
||||
CreateAiProviderParams,
|
||||
UpdateAiProviderConfigParams,
|
||||
} from '@/types/aiProvider';
|
||||
import { merge } from '@/utils/merge';
|
||||
|
||||
import { AiProviderSelectItem, aiModels, aiProviders } from '../../schemas';
|
||||
|
||||
@@ -238,10 +240,13 @@ export class AiProviderModel {
|
||||
let runtimeConfig: Record<string, AiProviderRuntimeConfig> = {};
|
||||
|
||||
for (const item of result) {
|
||||
const builtin = DEFAULT_MODEL_PROVIDER_LIST.find((provider) => provider.id === item.id);
|
||||
|
||||
const userSettings = item.settings || {};
|
||||
runtimeConfig[item.id] = {
|
||||
fetchOnClient: typeof item.fetchOnClient === 'boolean' ? item.fetchOnClient : undefined,
|
||||
keyVaults: !!item.keyVaults ? await decrypt(item.keyVaults) : {},
|
||||
settings: item.settings || {},
|
||||
settings: !!builtin ? merge(builtin.settings, userSettings) : userSettings,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import { Form } from '@lobehub/ui';
|
||||
import { Switch } from 'antd';
|
||||
import { memo } from 'react';
|
||||
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { agentSelectors } from '@/store/agent/slices/chat';
|
||||
import { aiModelSelectors, useAiInfraStore } from '@/store/aiInfra';
|
||||
|
||||
const ControlsForm = memo(() => {
|
||||
const [model, provider] = useAgentStore((s) => [
|
||||
agentSelectors.currentAgentModel(s),
|
||||
agentSelectors.currentAgentModelProvider(s),
|
||||
]);
|
||||
const modelExtendControls = useAiInfraStore(
|
||||
aiModelSelectors.modelExtendControls(model, provider),
|
||||
);
|
||||
|
||||
return (
|
||||
<Form
|
||||
itemMinWidth={200}
|
||||
items={modelExtendControls!.map((item: any) => ({
|
||||
children: <Switch />,
|
||||
label: item.key,
|
||||
minWidth: undefined,
|
||||
name: item.key,
|
||||
}))}
|
||||
itemsType={'flat'}
|
||||
onValuesChange={(_, values) => {
|
||||
console.log(values);
|
||||
}}
|
||||
size={'small'}
|
||||
style={{ fontSize: 12 }}
|
||||
variant={'pure'}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
export default ControlsForm;
|
||||
@@ -0,0 +1,40 @@
|
||||
import { ActionIcon } from '@lobehub/ui';
|
||||
import { Popover } from 'antd';
|
||||
import { Settings2Icon } from 'lucide-react';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { useIsMobile } from '@/hooks/useIsMobile';
|
||||
|
||||
import ControlsForm from './ControlsForm';
|
||||
|
||||
const ExtendControls = memo(() => {
|
||||
const { t } = useTranslation('chat');
|
||||
|
||||
const isMobile = useIsMobile();
|
||||
return (
|
||||
<Flexbox style={{ marginInlineStart: -4 }}>
|
||||
<Popover
|
||||
arrow={false}
|
||||
content={<ControlsForm />}
|
||||
open
|
||||
styles={{
|
||||
body: {
|
||||
minWidth: isMobile ? undefined : 250,
|
||||
width: isMobile ? '100vw' : undefined,
|
||||
},
|
||||
}}
|
||||
>
|
||||
<ActionIcon
|
||||
icon={Settings2Icon}
|
||||
placement={'bottom'}
|
||||
style={{ borderRadius: 20 }}
|
||||
title={t('extendControls.title')}
|
||||
/>
|
||||
</Popover>
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
|
||||
export default ExtendControls;
|
||||
@@ -0,0 +1,132 @@
|
||||
import { ModelIcon } from '@lobehub/icons';
|
||||
import { ActionIcon, Tooltip } from '@lobehub/ui';
|
||||
import { Popover } from 'antd';
|
||||
import { createStyles } from 'antd-style';
|
||||
import { Brain, Settings2Icon } from 'lucide-react';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Center, Flexbox } from 'react-layout-kit';
|
||||
|
||||
import ModelSwitchPanel from '@/features/ModelSwitchPanel';
|
||||
import { useIsMobile } from '@/hooks/useIsMobile';
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { agentSelectors } from '@/store/agent/selectors';
|
||||
import { aiModelSelectors, useAiInfraStore } from '@/store/aiInfra';
|
||||
|
||||
import ControlsForm from './ControlsForm';
|
||||
|
||||
const useStyles = createStyles(({ css, token, isDarkMode, cx }) => ({
|
||||
container: css`
|
||||
border-radius: 20px;
|
||||
background: ${isDarkMode ? token.colorFillSecondary : token.colorFillTertiary};
|
||||
`,
|
||||
icon: cx(
|
||||
'model-switch',
|
||||
css`
|
||||
transition: scale 400ms cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
`,
|
||||
),
|
||||
model: css`
|
||||
cursor: pointer;
|
||||
border-radius: 8px;
|
||||
|
||||
:hover {
|
||||
background: ${token.colorFillSecondary};
|
||||
}
|
||||
|
||||
:active {
|
||||
.model-switch {
|
||||
scale: 0.8;
|
||||
}
|
||||
}
|
||||
`,
|
||||
modelWithControl: css`
|
||||
border-radius: 20px;
|
||||
|
||||
:hover {
|
||||
background: ${token.colorFillTertiary};
|
||||
}
|
||||
`,
|
||||
|
||||
video: css`
|
||||
overflow: hidden;
|
||||
border-radius: 8px;
|
||||
`,
|
||||
}));
|
||||
|
||||
const ModelSwitch = memo(() => {
|
||||
const { t } = useTranslation('chat');
|
||||
const { styles, cx } = useStyles();
|
||||
const [model, provider, isLoading] = useAgentStore((s) => [
|
||||
agentSelectors.currentAgentModel(s),
|
||||
agentSelectors.currentAgentModelProvider(s),
|
||||
agentSelectors.isAgentConfigLoading(s),
|
||||
]);
|
||||
|
||||
const isModelHasExtendControls = useAiInfraStore(
|
||||
aiModelSelectors.isModelHasExtendControls(model, provider),
|
||||
);
|
||||
|
||||
const isMobile = useIsMobile();
|
||||
|
||||
if (isLoading)
|
||||
return (
|
||||
<ActionIcon
|
||||
icon={Brain}
|
||||
placement={'bottom'}
|
||||
style={{
|
||||
cursor: 'not-allowed',
|
||||
}}
|
||||
title={t('ModelSwitch.title')}
|
||||
/>
|
||||
);
|
||||
|
||||
return (
|
||||
<Flexbox
|
||||
align={'center'}
|
||||
className={isModelHasExtendControls ? styles.container : ''}
|
||||
horizontal
|
||||
>
|
||||
<ModelSwitchPanel>
|
||||
<Center
|
||||
className={cx(styles.model, isModelHasExtendControls && styles.modelWithControl)}
|
||||
height={36}
|
||||
width={36}
|
||||
>
|
||||
<Tooltip placement={'bottom'} title={[provider, model].join(' / ')}>
|
||||
<div className={styles.icon}>
|
||||
<ModelIcon model={model} size={22} />
|
||||
</div>
|
||||
</Tooltip>
|
||||
</Center>
|
||||
</ModelSwitchPanel>
|
||||
|
||||
{isModelHasExtendControls && (
|
||||
<Flexbox style={{ marginInlineStart: -4 }}>
|
||||
<Popover
|
||||
arrow={false}
|
||||
content={<ControlsForm />}
|
||||
open
|
||||
styles={{
|
||||
body: {
|
||||
minWidth: isMobile ? undefined : 200,
|
||||
width: isMobile ? '100vw' : undefined,
|
||||
},
|
||||
}}
|
||||
>
|
||||
<ActionIcon
|
||||
icon={Settings2Icon}
|
||||
placement={'bottom'}
|
||||
style={{ borderRadius: 20 }}
|
||||
title={t('extendControls.title')}
|
||||
/>
|
||||
</Popover>
|
||||
</Flexbox>
|
||||
)}
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
|
||||
ModelSwitch.displayName = 'ModelSwitch';
|
||||
|
||||
export default ModelSwitch;
|
||||
@@ -1,20 +0,0 @@
|
||||
import { ActionIcon } from '@lobehub/ui';
|
||||
import { Brain } from 'lucide-react';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import ModelSwitchPanel from '@/features/ModelSwitchPanel';
|
||||
|
||||
const ModelSwitch = memo(() => {
|
||||
const { t } = useTranslation('chat');
|
||||
|
||||
return (
|
||||
<ModelSwitchPanel>
|
||||
<ActionIcon icon={Brain} placement={'bottom'} title={t('ModelSwitch.title')} />
|
||||
</ModelSwitchPanel>
|
||||
);
|
||||
});
|
||||
|
||||
ModelSwitch.displayName = 'ModelSwitch';
|
||||
|
||||
export default ModelSwitch;
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ActionIcon } from '@lobehub/ui';
|
||||
import { Popover } from 'antd';
|
||||
import { useTheme } from 'antd-style';
|
||||
import { Settings2Icon } from 'lucide-react';
|
||||
import { SlidersHorizontal } from 'lucide-react';
|
||||
import { memo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
@@ -41,7 +41,7 @@ const Params = memo(() => {
|
||||
trigger={'click'}
|
||||
>
|
||||
<ActionIcon
|
||||
icon={Settings2Icon}
|
||||
icon={SlidersHorizontal}
|
||||
placement={'bottom'}
|
||||
title={popoverOpen ? undefined : t('settingModel.params.title')}
|
||||
/>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
const ExaIcon = () => {
|
||||
return (
|
||||
<svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect fill="white" height="24" width="24" />
|
||||
<path
|
||||
clipRule="evenodd"
|
||||
d="M4 2H20V3.49254L13.1718 12L20 20.5075V22H4V2ZM12.1006 10.6234L17.6493 3.49254H6.5519L12.1006 10.6234ZM5.80014 5.27954V11.2537H10.4488L5.80014 5.27954ZM10.4488 12.7463H5.80014V18.7205L10.4488 12.7463ZM6.5519 20.5075L12.1006 13.3766L17.6493 20.5075H6.5519Z"
|
||||
fill="#1F40ED"
|
||||
fillRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
};
|
||||
|
||||
export default ExaIcon;
|
||||
@@ -0,0 +1,68 @@
|
||||
import { Google } from '@lobehub/icons';
|
||||
import { Icon } from '@lobehub/ui';
|
||||
import { Switch } from 'antd';
|
||||
import { Search } from 'lucide-react';
|
||||
import { memo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { agentSelectors } from '@/store/agent/selectors';
|
||||
import { aiModelSelectors, useAiInfraStore } from '@/store/aiInfra';
|
||||
|
||||
import ExaIcon from './ExaIcon';
|
||||
|
||||
interface SearchEngineIconProps {
|
||||
icon?: string;
|
||||
}
|
||||
|
||||
const SearchEngineIcon = ({ icon }: SearchEngineIconProps) => {
|
||||
switch (icon) {
|
||||
case 'google': {
|
||||
return <Google.Color />;
|
||||
}
|
||||
|
||||
case 'exa': {
|
||||
return <ExaIcon />;
|
||||
}
|
||||
|
||||
default: {
|
||||
return <Icon icon={Search} size={{ fontSize: 16 }} />;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const ModelBuiltinSearch = memo(() => {
|
||||
const { t } = useTranslation('chat');
|
||||
const [model, provider, checked, updateAgentChatConfig] = useAgentStore((s) => [
|
||||
agentSelectors.currentAgentModel(s),
|
||||
agentSelectors.currentAgentModelProvider(s),
|
||||
agentSelectors.currentAgentChatConfig(s).useModelBuiltinSearch,
|
||||
s.updateAgentChatConfig,
|
||||
]);
|
||||
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
const modelCard = useAiInfraStore(aiModelSelectors.getEnabledModelById(model, provider));
|
||||
|
||||
return (
|
||||
<Flexbox
|
||||
align={'center'}
|
||||
horizontal
|
||||
justify={'space-between'}
|
||||
onClick={async () => {
|
||||
setLoading(true);
|
||||
await updateAgentChatConfig({ useModelBuiltinSearch: !checked });
|
||||
setLoading(false);
|
||||
}}
|
||||
padding={'8px 12px'}
|
||||
style={{ cursor: 'pointer', userSelect: 'none' }}
|
||||
>
|
||||
<Flexbox align={'center'} gap={4} horizontal>
|
||||
<SearchEngineIcon icon={modelCard?.settings?.searchProvider} />
|
||||
{t('search.mode.useModelBuiltin')}
|
||||
</Flexbox>
|
||||
<Switch checked={checked} loading={isLoading} size={'small'} />
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
export default ModelBuiltinSearch;
|
||||
@@ -0,0 +1,167 @@
|
||||
import { DisconnectOutlined } from '@ant-design/icons';
|
||||
import { Icon } from '@lobehub/ui';
|
||||
import { Divider, Typography } from 'antd';
|
||||
import { createStyles } from 'antd-style';
|
||||
import { CheckIcon, SparklesIcon } from 'lucide-react';
|
||||
import { ReactNode, memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { agentSelectors } from '@/store/agent/slices/chat';
|
||||
import { aiModelSelectors, useAiInfraStore } from '@/store/aiInfra';
|
||||
import { SearchMode } from '@/types/search';
|
||||
|
||||
import ModelBuiltinSearch from './ModelBuiltinSearch';
|
||||
|
||||
const { Text } = Typography;
|
||||
|
||||
interface NetworkOption {
|
||||
description: string;
|
||||
disable?: boolean;
|
||||
icon: ReactNode;
|
||||
label: string;
|
||||
value: SearchMode;
|
||||
}
|
||||
|
||||
const useStyles = createStyles(({ css, token }) => ({
|
||||
check: css`
|
||||
margin-inline-start: 12px;
|
||||
font-size: 16px;
|
||||
color: ${token.colorPrimary};
|
||||
`,
|
||||
content: css`
|
||||
flex: 1;
|
||||
width: 230px;
|
||||
`,
|
||||
description: css`
|
||||
font-size: 12px;
|
||||
color: ${token.colorTextSecondary};
|
||||
`,
|
||||
disable: css`
|
||||
cursor: not-allowed;
|
||||
opacity: 0.45;
|
||||
`,
|
||||
iconWrapper: css`
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
|
||||
font-size: 16px;
|
||||
|
||||
background: ${token.colorFillQuaternary};
|
||||
`,
|
||||
option: css`
|
||||
cursor: pointer;
|
||||
|
||||
align-items: center;
|
||||
|
||||
width: 100%;
|
||||
padding-block: 8px;
|
||||
padding-inline: 12px;
|
||||
border-radius: 8px;
|
||||
|
||||
transition: background-color 0.2s;
|
||||
|
||||
&:hover {
|
||||
background: ${token.colorFillTertiary};
|
||||
}
|
||||
`,
|
||||
title: css`
|
||||
margin-block-end: 2px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: ${token.colorText};
|
||||
`,
|
||||
}));
|
||||
|
||||
const Item = memo<NetworkOption>(({ value, description, icon, label, disable }) => {
|
||||
const { t } = useTranslation('chat');
|
||||
const { styles } = useStyles();
|
||||
const [mode, updateAgentChatConfig] = useAgentStore((s) => [
|
||||
agentSelectors.agentSearchMode(s),
|
||||
s.updateAgentChatConfig,
|
||||
]);
|
||||
|
||||
return (
|
||||
<Flexbox
|
||||
className={styles.option}
|
||||
gap={24}
|
||||
horizontal
|
||||
key={value}
|
||||
onClick={() => updateAgentChatConfig({ searchMode: value })}
|
||||
>
|
||||
<Flexbox className={disable ? styles.disable : ''} gap={8} horizontal>
|
||||
<div className={styles.iconWrapper}>{icon}</div>
|
||||
<div className={styles.content}>
|
||||
<div className={styles.title}>{label}</div>
|
||||
<Text className={styles.description} type="secondary">
|
||||
{disable ? t('search.mode.disable') : description}
|
||||
</Text>
|
||||
</div>
|
||||
</Flexbox>
|
||||
{mode === value && <Icon className={styles.check} icon={CheckIcon} />}
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
|
||||
interface AINetworkSettingsProps {
|
||||
providerSearch?: boolean;
|
||||
}
|
||||
const AINetworkSettings = memo<AINetworkSettingsProps>(() => {
|
||||
const { t } = useTranslation('chat');
|
||||
const [model, provider] = useAgentStore((s) => [
|
||||
agentSelectors.currentAgentModel(s),
|
||||
agentSelectors.currentAgentModelProvider(s),
|
||||
]);
|
||||
|
||||
const supportFC = useAiInfraStore(aiModelSelectors.isModelSupportToolUse(model, provider));
|
||||
const isModelHasBuiltinSearchConfig = useAiInfraStore(
|
||||
aiModelSelectors.isModelHasBuiltinSearchConfig(model, provider),
|
||||
);
|
||||
|
||||
const options: NetworkOption[] = [
|
||||
{
|
||||
description: t('search.mode.off.desc'),
|
||||
icon: <DisconnectOutlined />,
|
||||
label: t('search.mode.off.title'),
|
||||
value: 'off',
|
||||
},
|
||||
// 等应用层联网功能做好以后再开启
|
||||
// {
|
||||
// description: t('search.mode.on.desc'),
|
||||
// icon: <WifiOutlined />,
|
||||
// label: t('search.mode.on.title'),
|
||||
// value: 'on',
|
||||
// },
|
||||
{
|
||||
description: t('search.mode.auto.desc'),
|
||||
disable: !supportFC,
|
||||
icon: <Icon icon={SparklesIcon} />,
|
||||
label: t('search.mode.auto.title'),
|
||||
value: 'auto',
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<Flexbox gap={8}>
|
||||
{options.map((option) => (
|
||||
<Item {...option} key={option.value} />
|
||||
))}
|
||||
|
||||
{isModelHasBuiltinSearchConfig && (
|
||||
<>
|
||||
<Divider style={{ margin: 0, paddingInline: 12 }} />
|
||||
<ModelBuiltinSearch />
|
||||
</>
|
||||
)}
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
|
||||
export default AINetworkSettings;
|
||||
@@ -0,0 +1,76 @@
|
||||
import { ActionIcon } from '@lobehub/ui';
|
||||
import { Popover } from 'antd';
|
||||
import { useTheme } from 'antd-style';
|
||||
import { Globe } from 'lucide-react';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { useIsMobile } from '@/hooks/useIsMobile';
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { agentSelectors } from '@/store/agent/selectors';
|
||||
import { aiModelSelectors, aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra';
|
||||
|
||||
import AINetworkSettings from './SwitchPanel';
|
||||
|
||||
const Search = memo(() => {
|
||||
const { t } = useTranslation('chat');
|
||||
const [isLoading, isAgentEnableSearch] = useAgentStore((s) => [
|
||||
agentSelectors.isAgentConfigLoading(s),
|
||||
agentSelectors.isAgentEnableSearch(s),
|
||||
]);
|
||||
const [model, provider] = useAgentStore((s) => [
|
||||
agentSelectors.currentAgentModel(s),
|
||||
agentSelectors.currentAgentModelProvider(s),
|
||||
]);
|
||||
|
||||
const [isModelHasBuiltinSearch] = useAiInfraStore((s) => [
|
||||
aiModelSelectors.isModelHasBuiltinSearchConfig(model, provider)(s),
|
||||
aiProviderSelectors.isProviderHasBuiltinSearchConfig(provider)(s),
|
||||
]);
|
||||
|
||||
const isMobile = useIsMobile();
|
||||
|
||||
const theme = useTheme();
|
||||
if (isLoading)
|
||||
return (
|
||||
<ActionIcon
|
||||
icon={Globe}
|
||||
placement={'bottom'}
|
||||
style={{
|
||||
cursor: 'not-allowed',
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
return (
|
||||
isModelHasBuiltinSearch && (
|
||||
<Flexbox>
|
||||
<Popover
|
||||
arrow={false}
|
||||
content={<AINetworkSettings />}
|
||||
styles={{
|
||||
body: {
|
||||
minWidth: isMobile ? undefined : 200,
|
||||
padding: 4,
|
||||
width: isMobile ? '100vw' : undefined,
|
||||
},
|
||||
}}
|
||||
>
|
||||
<ActionIcon
|
||||
color={
|
||||
isAgentEnableSearch ? (theme.isDarkMode ? theme.cyan7 : theme.cyan10) : undefined
|
||||
}
|
||||
icon={Globe}
|
||||
placement={'bottom'}
|
||||
title={t('search.title')}
|
||||
/>
|
||||
</Popover>
|
||||
</Flexbox>
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
Search.displayName = 'Search';
|
||||
|
||||
export default Search;
|
||||
@@ -2,8 +2,9 @@ import STT from '../STT';
|
||||
import Clear from './Clear';
|
||||
import History from './History';
|
||||
import Knowledge from './Knowledge';
|
||||
import ModelSwitch from './ModelSwitch';
|
||||
import Model from './Model';
|
||||
import Params from './Params';
|
||||
import Search from './Search';
|
||||
import { MainToken, PortalToken } from './Token';
|
||||
import Tools from './Tools';
|
||||
import Upload from './Upload';
|
||||
@@ -14,9 +15,10 @@ export const actionMap = {
|
||||
history: History,
|
||||
knowledgeBase: Knowledge,
|
||||
mainToken: MainToken,
|
||||
model: ModelSwitch,
|
||||
model: Model,
|
||||
params: Params,
|
||||
portalToken: PortalToken,
|
||||
search: Search,
|
||||
stt: STT,
|
||||
temperature: Params,
|
||||
tools: Tools,
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
import { Icon, SearchResultCards, Tag } from '@lobehub/ui';
|
||||
import { createStyles } from 'antd-style';
|
||||
import { AnimatePresence, motion } from 'framer-motion';
|
||||
import { ChevronDown, ChevronRight, Globe } from 'lucide-react';
|
||||
import Image from 'next/image';
|
||||
import { rgba } from 'polished';
|
||||
import { memo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
|
||||
const useStyles = createStyles(({ css, token, isDarkMode }) => ({
|
||||
container: css`
|
||||
width: fit-content;
|
||||
padding-block: 4px;
|
||||
padding-inline: 8px;
|
||||
border-radius: 6px;
|
||||
|
||||
color: ${token.colorTextTertiary};
|
||||
|
||||
&:hover {
|
||||
background: ${isDarkMode ? token.colorFillQuaternary : token.colorFillTertiary};
|
||||
}
|
||||
`,
|
||||
expand: css`
|
||||
background: ${isDarkMode ? token.colorFillQuaternary : token.colorFillTertiary} !important;
|
||||
`,
|
||||
shinyText: css`
|
||||
color: ${rgba(token.colorText, 0.45)};
|
||||
|
||||
background: linear-gradient(
|
||||
120deg,
|
||||
${rgba(token.colorTextBase, 0)} 40%,
|
||||
${token.colorTextSecondary} 50%,
|
||||
${rgba(token.colorTextBase, 0)} 60%
|
||||
);
|
||||
background-clip: text;
|
||||
background-size: 200% 100%;
|
||||
|
||||
animation: shine 1.5s linear infinite;
|
||||
|
||||
@keyframes shine {
|
||||
0% {
|
||||
background-position: 100%;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: -100%;
|
||||
}
|
||||
}
|
||||
`,
|
||||
title: css`
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 1;
|
||||
|
||||
font-size: 12px;
|
||||
text-overflow: ellipsis;
|
||||
`,
|
||||
}));
|
||||
|
||||
const SearchGrounding = memo<GroundingSearch>(({ searchQueries, citations }) => {
|
||||
const { t } = useTranslation('chat');
|
||||
const { styles, cx, theme } = useStyles();
|
||||
|
||||
const [showDetail, setShowDetail] = useState(false);
|
||||
|
||||
return (
|
||||
<Flexbox
|
||||
className={cx(styles.container, showDetail && styles.expand)}
|
||||
gap={16}
|
||||
style={{ width: showDetail ? '100%' : undefined }}
|
||||
>
|
||||
<Flexbox
|
||||
distribution={'space-between'}
|
||||
flex={1}
|
||||
gap={8}
|
||||
horizontal
|
||||
onClick={() => {
|
||||
setShowDetail(!showDetail);
|
||||
}}
|
||||
style={{ cursor: 'pointer' }}
|
||||
>
|
||||
<Flexbox align={'center'} gap={8} horizontal>
|
||||
<Icon icon={Globe} />
|
||||
<Flexbox horizontal>{t('search.grounding.title', { count: citations?.length })}</Flexbox>
|
||||
{!showDetail && (
|
||||
<Flexbox horizontal>
|
||||
{citations?.slice(0, 8).map((item, index) => (
|
||||
<Image
|
||||
alt={item.title || item.url}
|
||||
height={16}
|
||||
key={`${item.url}-${index}`}
|
||||
src={`https://icons.duckduckgo.com/ip3/${new URL(item.url).host}.ico`}
|
||||
style={{
|
||||
background: theme.colorBgContainer,
|
||||
borderRadius: 8,
|
||||
marginInline: -2,
|
||||
padding: 2,
|
||||
zIndex: 100 - index,
|
||||
}}
|
||||
unoptimized
|
||||
width={16}
|
||||
/>
|
||||
))}
|
||||
</Flexbox>
|
||||
)}
|
||||
</Flexbox>
|
||||
|
||||
<Flexbox gap={4} horizontal>
|
||||
<Icon icon={showDetail ? ChevronDown : ChevronRight} />
|
||||
</Flexbox>
|
||||
</Flexbox>
|
||||
|
||||
<AnimatePresence initial={false}>
|
||||
{showDetail && (
|
||||
<motion.div
|
||||
animate="open"
|
||||
exit="collapsed"
|
||||
initial="collapsed"
|
||||
style={{ overflow: 'hidden', width: '100%' }}
|
||||
transition={{
|
||||
duration: 0.2,
|
||||
ease: [0.4, 0, 0.2, 1], // 使用 ease-out 缓动函数
|
||||
}}
|
||||
variants={{
|
||||
collapsed: { height: 0, opacity: 0, width: 'auto' },
|
||||
open: { height: 'auto', opacity: 1, width: 'auto' },
|
||||
}}
|
||||
>
|
||||
<Flexbox gap={12}>
|
||||
{searchQueries && (
|
||||
<Flexbox gap={4} horizontal>
|
||||
{t('search.grounding.searchQueries')}
|
||||
<Flexbox gap={8} horizontal>
|
||||
{searchQueries.map((query, index) => (
|
||||
<Tag key={index}>{query}</Tag>
|
||||
))}
|
||||
</Flexbox>
|
||||
</Flexbox>
|
||||
)}
|
||||
{citations && <SearchResultCards dataSource={citations} />}
|
||||
</Flexbox>
|
||||
</motion.div>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
|
||||
export default SearchGrounding;
|
||||
@@ -9,13 +9,14 @@ import { ChatMessage } from '@/types/message';
|
||||
import { DefaultMessage } from '../Default';
|
||||
import FileChunks from './FileChunks';
|
||||
import Reasoning from './Reasoning';
|
||||
import SearchGrounding from './SearchGrounding';
|
||||
import Tool from './Tool';
|
||||
|
||||
export const AssistantMessage = memo<
|
||||
ChatMessage & {
|
||||
editableContent: ReactNode;
|
||||
}
|
||||
>(({ id, tools, content, chunksList, ...props }) => {
|
||||
>(({ id, tools, content, chunksList, search, ...props }) => {
|
||||
const editing = useChatStore(chatSelectors.isMessageEditing(id));
|
||||
const generating = useChatStore(chatSelectors.isMessageGenerating(id));
|
||||
|
||||
@@ -23,6 +24,8 @@ export const AssistantMessage = memo<
|
||||
|
||||
const isReasoning = useChatStore(aiChatSelectors.isMessageInReasoning(id));
|
||||
|
||||
const showSearch = !!search && !!search.citations?.length;
|
||||
|
||||
// remove \n to avoid empty content
|
||||
// refs: https://github.com/lobehub/lobe-chat/pull/6153
|
||||
const showReasoning =
|
||||
@@ -38,6 +41,9 @@ export const AssistantMessage = memo<
|
||||
/>
|
||||
) : (
|
||||
<Flexbox gap={8} id={id}>
|
||||
{showSearch && (
|
||||
<SearchGrounding citations={search?.citations} searchQueries={search?.searchQueries} />
|
||||
)}
|
||||
{!!chunksList && chunksList.length > 0 && <FileChunks data={chunksList} />}
|
||||
{showReasoning && <Reasoning {...props.reasoning} id={id} />}
|
||||
{content && (
|
||||
|
||||
@@ -4,7 +4,7 @@ import { memo, useMemo } from 'react';
|
||||
|
||||
import { ModelItemRender, ProviderItemRender } from '@/components/ModelSelect';
|
||||
import { useEnabledChatModels } from '@/hooks/useEnabledChatModels';
|
||||
import { EnabledProviderWithModels } from '@/types/aiModel';
|
||||
import { EnabledProviderWithModels } from '@/types/aiProvider';
|
||||
|
||||
const useStyles = createStyles(({ css, prefixCls }) => ({
|
||||
select: css`
|
||||
|
||||
@@ -14,7 +14,7 @@ import { useEnabledChatModels } from '@/hooks/useEnabledChatModels';
|
||||
import { useIsMobile } from '@/hooks/useIsMobile';
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { agentSelectors } from '@/store/agent/slices/chat';
|
||||
import { EnabledProviderWithModels } from '@/types/aiModel';
|
||||
import { EnabledProviderWithModels } from '@/types/aiProvider';
|
||||
|
||||
const useStyles = createStyles(({ css, prefixCls }) => ({
|
||||
menu: css`
|
||||
@@ -68,7 +68,7 @@ const ModelSwitchPanel = memo<PropsWithChildren>(({ children }) => {
|
||||
if (items.length === 0)
|
||||
return [
|
||||
{
|
||||
key: 'empty',
|
||||
key: `${provider.id}-empty`,
|
||||
label: (
|
||||
<Flexbox gap={8} horizontal style={{ color: theme.colorTextTertiary }}>
|
||||
{t('ModelSwitchPanel.emptyModel')}
|
||||
@@ -114,7 +114,6 @@ const ModelSwitchPanel = memo<PropsWithChildren>(({ children }) => {
|
||||
},
|
||||
}}
|
||||
placement={isMobile ? 'top' : 'topLeft'}
|
||||
trigger={['click']}
|
||||
>
|
||||
<div className={styles.tag}>{children}</div>
|
||||
</Dropdown>
|
||||
|
||||
@@ -4,7 +4,7 @@ import { isDeprecatedEdition } from '@/const/version';
|
||||
import { useAiInfraStore } from '@/store/aiInfra';
|
||||
import { useUserStore } from '@/store/user';
|
||||
import { modelProviderSelectors } from '@/store/user/selectors';
|
||||
import { EnabledProviderWithModels } from '@/types/aiModel';
|
||||
import { EnabledProviderWithModels } from '@/types/aiProvider';
|
||||
|
||||
export const useEnabledChatModels = (): EnabledProviderWithModels[] => {
|
||||
const enabledList = useUserStore(modelProviderSelectors.modelProviderListForModelSelect, isEqual);
|
||||
|
||||
@@ -74,6 +74,145 @@ describe('LobeGoogleAI', () => {
|
||||
// 额外的断言可以加入,比如验证返回的流内容等
|
||||
});
|
||||
|
||||
it('should withGrounding', () => {
|
||||
const data = [
|
||||
{
|
||||
candidates: [{ content: { parts: [{ text: 'As' }], role: 'model' } }],
|
||||
usageMetadata: { promptTokenCount: 8, totalTokenCount: 8 },
|
||||
modelVersion: 'gemini-2.0-flash',
|
||||
},
|
||||
{
|
||||
candidates: [
|
||||
{
|
||||
content: { parts: [{ text: ' of February 22, 2025, "Ne Zha ' }], role: 'model' },
|
||||
safetyRatings: [
|
||||
{ category: 'HARM_CATEGORY_HATE_SPEECH', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_DANGEROUS_CONTENT', probability: 'MEDIUM' },
|
||||
{ category: 'HARM_CATEGORY_HARASSMENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', probability: 'NEGLIGIBLE' },
|
||||
],
|
||||
},
|
||||
],
|
||||
usageMetadata: { promptTokenCount: 8, totalTokenCount: 8 },
|
||||
modelVersion: 'gemini-2.0-flash',
|
||||
},
|
||||
{
|
||||
candidates: [
|
||||
{
|
||||
content: {
|
||||
parts: [{ text: '2" has grossed the following:\n\n* **Worldwide:** $1' }],
|
||||
role: 'model',
|
||||
},
|
||||
safetyRatings: [
|
||||
{ category: 'HARM_CATEGORY_HATE_SPEECH', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_DANGEROUS_CONTENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_HARASSMENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', probability: 'NEGLIGIBLE' },
|
||||
],
|
||||
},
|
||||
],
|
||||
usageMetadata: { promptTokenCount: 8, totalTokenCount: 8 },
|
||||
modelVersion: 'gemini-2.0-flash',
|
||||
},
|
||||
{
|
||||
candidates: [
|
||||
{
|
||||
content: {
|
||||
parts: [
|
||||
{
|
||||
text: '.66 billion\n* **China:** $1.82 billion (CN¥12.35 billion)\n* **US &',
|
||||
},
|
||||
],
|
||||
role: 'model',
|
||||
},
|
||||
safetyRatings: [
|
||||
{ category: 'HARM_CATEGORY_HATE_SPEECH', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_DANGEROUS_CONTENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_HARASSMENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', probability: 'NEGLIGIBLE' },
|
||||
],
|
||||
},
|
||||
],
|
||||
usageMetadata: { promptTokenCount: 8, totalTokenCount: 8 },
|
||||
modelVersion: 'gemini-2.0-flash',
|
||||
},
|
||||
{
|
||||
candidates: [
|
||||
{
|
||||
content: { parts: [{ text: ' Canada:** $24,744,753\n' }], role: 'model' },
|
||||
finishReason: 'STOP',
|
||||
safetyRatings: [
|
||||
{ category: 'HARM_CATEGORY_HATE_SPEECH', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_DANGEROUS_CONTENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_HARASSMENT', probability: 'NEGLIGIBLE' },
|
||||
{ category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', probability: 'NEGLIGIBLE' },
|
||||
],
|
||||
groundingMetadata: {
|
||||
searchEntryPoint: {
|
||||
renderedContent:
|
||||
'<style>\n.container {\n align-items: center;\n border-radius: 8px;\n display: flex;\n font-family: Google Sans, Roboto, sans-serif;\n font-size: 14px;\n line-height: 20px;\n padding: 8px 12px;\n}\n.chip {\n display: inline-block;\n border: solid 1px;\n border-radius: 16px;\n min-width: 14px;\n padding: 5px 16px;\n text-align: center;\n user-select: none;\n margin: 0 8px;\n -webkit-tap-highlight-color: transparent;\n}\n.carousel {\n overflow: auto;\n scrollbar-width: none;\n white-space: nowrap;\n margin-right: -12px;\n}\n.headline {\n display: flex;\n margin-right: 4px;\n}\n.gradient-container {\n position: relative;\n}\n.gradient {\n position: absolute;\n transform: translate(3px, -9px);\n height: 36px;\n width: 9px;\n}\n@media (prefers-color-scheme: light) {\n .container {\n background-color: #fafafa;\n box-shadow: 0 0 0 1px #0000000f;\n }\n .headline-label {\n color: #1f1f1f;\n }\n .chip {\n background-color: #ffffff;\n border-color: #d2d2d2;\n color: #5e5e5e;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #f2f2f2;\n }\n .chip:focus {\n background-color: #f2f2f2;\n }\n .chip:active {\n background-color: #d8d8d8;\n border-color: #b6b6b6;\n }\n .logo-dark {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #fafafa 15%, #fafafa00 100%);\n }\n}\n@media (prefers-color-scheme: dark) {\n .container {\n background-color: #1f1f1f;\n box-shadow: 0 0 0 1px #ffffff26;\n }\n .headline-label {\n color: #fff;\n }\n .chip {\n background-color: #2c2c2c;\n border-color: #3c4043;\n color: #fff;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #353536;\n }\n .chip:focus {\n background-color: #353536;\n }\n .chip:active {\n background-color: #464849;\n border-color: #53575b;\n }\n .logo-light {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #1f1f1f 15%, #1f1f1f00 100%);\n }\n}\n</style>\n<div class="container">\n <div class="headline">\n <svg class="logo-light" width="18" height="18" viewBox="9 9 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path fill-rule="evenodd" clip-rule="evenodd" d="M42.8622 27.0064C42.8622 25.7839 42.7525 24.6084 42.5487 23.4799H26.3109V30.1568H35.5897C35.1821 32.3041 33.9596 34.1222 32.1258 35.3448V39.6864H37.7213C40.9814 36.677 42.8622 32.2571 42.8622 27.0064V27.0064Z" fill="#4285F4"/>\n <path fill-rule="evenodd" clip-rule="evenodd" d="M26.3109 43.8555C30.9659 43.8555 34.8687 42.3195 37.7213 39.6863L32.1258 35.3447C30.5898 36.3792 28.6306 37.0061 26.3109 37.0061C21.8282 37.0061 18.0195 33.9811 16.6559 29.906H10.9194V34.3573C13.7563 39.9841 19.5712 43.8555 26.3109 43.8555V43.8555Z" fill="#34A853"/>\n <path fill-rule="evenodd" clip-rule="evenodd" d="M16.6559 29.8904C16.3111 28.8559 16.1074 27.7588 16.1074 26.6146C16.1074 25.4704 16.3111 24.3733 16.6559 23.3388V18.8875H10.9194C9.74388 21.2072 9.06992 23.8247 9.06992 26.6146C9.06992 29.4045 9.74388 32.022 10.9194 34.3417L15.3864 30.8621L16.6559 29.8904V29.8904Z" fill="#FBBC05"/>\n <path fill-rule="evenodd" clip-rule="evenodd" d="M26.3109 16.2386C28.85 16.2386 31.107 17.1164 32.9095 18.8091L37.8466 13.8719C34.853 11.082 30.9659 9.3736 26.3109 9.3736C19.5712 9.3736 13.7563 13.245 10.9194 18.8875L16.6559 23.3388C18.0195 19.2636 21.8282 16.2386 26.3109 16.2386V16.2386Z" fill="#EA4335"/>\n </svg>\n <svg class="logo-dark" width="18" height="18" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">\n <circle cx="24" cy="23" fill="#FFF" r="22"/>\n <path d="M33.76 34.26c2.75-2.56 4.49-6.37 4.49-11.26 0-.89-.08-1.84-.29-3H24.01v5.99h8.03c-.4 2.02-1.5 3.56-3.07 4.56v.75l3.91 2.97h.88z" fill="#4285F4"/>\n <path d="M15.58 25.77A8.845 8.845 0 0 0 24 31.86c1.92 0 3.62-.46 4.97-1.31l4.79 3.71C31.14 36.7 27.65 38 24 38c-5.93 0-11.01-3.4-13.45-8.36l.17-1.01 4.06-2.85h.8z" fill="#34A853"/>\n <path d="M15.59 20.21a8.864 8.864 0 0 0 0 5.58l-5.03 3.86c-.98-2-1.53-4.25-1.53-6.64 0-2.39.55-4.64 1.53-6.64l1-.22 3.81 2.98.22 1.08z" fill="#FBBC05"/>\n <path d="M24 14.14c2.11 0 4.02.75 5.52 1.98l4.36-4.36C31.22 9.43 27.81 8 24 8c-5.93 0-11.01 3.4-13.45 8.36l5.03 3.85A8.86 8.86 0 0 1 24 14.14z" fill="#EA4335"/>\n </svg>\n <div class="gradient-container"><div class="gradient"></div></div>\n </div>\n <div class="carousel">\n <a class="chip" href="https://vertexaisearch.cloud.google.com/grounding-api-redirect/AQXblrycKK-4Q61T9-BeH_jYKcMfCwyI0-TGMMzPcvZuXVtBjnsxXJkWcxxay0giciDNQ5g4dfD8SdUuBIlBLFQE7Fuc8e50WZuKO9u3HVjQXMznQxtzcQ4fHUn1lDlsvKiurKnD-G-Sl6s7_8h3JNMJSsObKg79sP0vQ_f9N7ib5s3tuF35FglH1NLaiTvdpM1DVhaHZc2In94_hV3W-_k=">Nezha Reborn 2 box office</a>\n </div>\n</div>\n',
|
||||
},
|
||||
groundingChunks: [
|
||||
{
|
||||
web: {
|
||||
uri: 'https://vertexaisearch.cloud.google.com/grounding-api-redirect/AQXblrz3Up-UZrEsLlT8zPkpwbakcjDZbojH5RuXL0HAa_0rHfG1WE5h6jADFSzcMxKNZcit_n7OaxnTvZNjp9WFL4NNJmjkqQRJoK_XdeVsnbshWJpm9TJL7KNNwzAl254th8cHxTsQIOPoNxsnrXeebIlMDVb8OuFWfCWUToiRxhv1_Vo=',
|
||||
title: 'screenrant.com',
|
||||
},
|
||||
},
|
||||
{
|
||||
web: {
|
||||
uri: 'https://vertexaisearch.cloud.google.com/grounding-api-redirect/AQXblry4I3hWcwVL-mI75BJYSy72Lb97KF50N2p5PWvH8vuLQQgekFmlw9PDiJ3KouByidcMsja_7IJ3F1S0PguLC0r_uxbcAGfFvJzbiMNdWOhQ7xDSJqObd_mCUa-VFpYzm6cd',
|
||||
title: 'imdb.com',
|
||||
},
|
||||
},
|
||||
],
|
||||
groundingSupports: [
|
||||
{
|
||||
segment: {
|
||||
startIndex: 64,
|
||||
endIndex: 96,
|
||||
text: '* **Worldwide:** $1.66 billion',
|
||||
},
|
||||
groundingChunkIndices: [0],
|
||||
confidenceScores: [0.95218265],
|
||||
},
|
||||
{
|
||||
segment: {
|
||||
startIndex: 146,
|
||||
endIndex: 178,
|
||||
text: '* **US & Canada:** $24,744,753',
|
||||
},
|
||||
groundingChunkIndices: [1],
|
||||
confidenceScores: [0.7182074],
|
||||
},
|
||||
],
|
||||
retrievalMetadata: {},
|
||||
webSearchQueries: ['Nezha Reborn 2 box office'],
|
||||
},
|
||||
},
|
||||
],
|
||||
usageMetadata: {
|
||||
promptTokenCount: 7,
|
||||
candidatesTokenCount: 79,
|
||||
totalTokenCount: 86,
|
||||
promptTokensDetails: [{ modality: 'TEXT', tokenCount: 7 }],
|
||||
candidatesTokensDetails: [{ modality: 'TEXT', tokenCount: 79 }],
|
||||
},
|
||||
modelVersion: 'gemini-2.0-flash',
|
||||
},
|
||||
];
|
||||
const mockStream = new ReadableStream({
|
||||
start(controller) {
|
||||
controller.enqueue('Hello, world!');
|
||||
controller.close();
|
||||
},
|
||||
});
|
||||
|
||||
vi.spyOn(instance['client'], 'getGenerativeModel').mockReturnValue({
|
||||
generateContentStream: vi.fn().mockResolvedValueOnce(mockStream),
|
||||
} as any);
|
||||
});
|
||||
|
||||
it('should call debugStream in DEBUG mode', async () => {
|
||||
// 设置环境变量以启用DEBUG模式
|
||||
process.env.DEBUG_GOOGLE_CHAT_COMPLETION = '1';
|
||||
@@ -368,51 +507,19 @@ describe('LobeGoogleAI', () => {
|
||||
it('get default result with gemini-pro', async () => {
|
||||
const messages: OpenAIChatMessage[] = [{ content: 'Hello', role: 'user' }];
|
||||
|
||||
const contents = await instance['buildGoogleMessages'](messages, 'gemini-pro');
|
||||
const contents = await instance['buildGoogleMessages'](messages);
|
||||
|
||||
expect(contents).toHaveLength(1);
|
||||
expect(contents).toEqual([{ parts: [{ text: 'Hello' }], role: 'user' }]);
|
||||
});
|
||||
|
||||
it('messages should end with user if using gemini-pro', async () => {
|
||||
const messages: OpenAIChatMessage[] = [
|
||||
{ content: 'Hello', role: 'user' },
|
||||
{ content: 'Hi', role: 'assistant' },
|
||||
];
|
||||
|
||||
const contents = await instance['buildGoogleMessages'](messages, 'gemini-1.0');
|
||||
|
||||
expect(contents).toHaveLength(3);
|
||||
expect(contents).toEqual([
|
||||
{ parts: [{ text: 'Hello' }], role: 'user' },
|
||||
{ parts: [{ text: 'Hi' }], role: 'model' },
|
||||
{ parts: [{ text: '' }], role: 'user' },
|
||||
]);
|
||||
});
|
||||
|
||||
it('should include system role if there is a system role prompt', async () => {
|
||||
const messages: OpenAIChatMessage[] = [
|
||||
{ content: 'you are ChatGPT', role: 'system' },
|
||||
{ content: 'Who are you', role: 'user' },
|
||||
];
|
||||
|
||||
const contents = await instance['buildGoogleMessages'](messages, 'gemini-1.0');
|
||||
|
||||
expect(contents).toHaveLength(3);
|
||||
expect(contents).toEqual([
|
||||
{ parts: [{ text: 'you are ChatGPT' }], role: 'user' },
|
||||
{ parts: [{ text: '' }], role: 'model' },
|
||||
{ parts: [{ text: 'Who are you' }], role: 'user' },
|
||||
]);
|
||||
});
|
||||
|
||||
it('should not modify the length if model is gemini-1.5-pro', async () => {
|
||||
const messages: OpenAIChatMessage[] = [
|
||||
{ content: 'Hello', role: 'user' },
|
||||
{ content: 'Hi', role: 'assistant' },
|
||||
];
|
||||
|
||||
const contents = await instance['buildGoogleMessages'](messages, 'gemini-1.5-pro-latest');
|
||||
const contents = await instance['buildGoogleMessages'](messages);
|
||||
|
||||
expect(contents).toHaveLength(2);
|
||||
expect(contents).toEqual([
|
||||
@@ -431,10 +538,9 @@ describe('LobeGoogleAI', () => {
|
||||
role: 'user',
|
||||
},
|
||||
];
|
||||
const model = 'gemini-1.5-flash-latest';
|
||||
|
||||
// 调用 buildGoogleMessages 方法
|
||||
const contents = await instance['buildGoogleMessages'](messages, model);
|
||||
const contents = await instance['buildGoogleMessages'](messages);
|
||||
|
||||
expect(contents).toHaveLength(1);
|
||||
expect(contents).toEqual([
|
||||
|
||||
@@ -5,12 +5,13 @@ import {
|
||||
FunctionDeclaration,
|
||||
Tool as GoogleFunctionCallTool,
|
||||
GoogleGenerativeAI,
|
||||
GoogleSearchRetrievalTool,
|
||||
Part,
|
||||
SchemaType,
|
||||
} from '@google/generative-ai';
|
||||
|
||||
import type { ChatModelCard } from '@/types/llm';
|
||||
import { VertexAIStream } from '@/libs/agent-runtime/utils/streams/vertex-ai';
|
||||
import type { ChatModelCard } from '@/types/llm';
|
||||
import { imageUrlToBase64 } from '@/utils/imageToBase64';
|
||||
import { safeParseJSON } from '@/utils/safeParseJSON';
|
||||
|
||||
@@ -86,7 +87,7 @@ export class LobeGoogleAI implements LobeRuntimeAI {
|
||||
const payload = this.buildPayload(rawPayload);
|
||||
const model = payload.model;
|
||||
|
||||
const contents = await this.buildGoogleMessages(payload.messages, model);
|
||||
const contents = await this.buildGoogleMessages(payload.messages);
|
||||
|
||||
const geminiStreamResult = await this.client
|
||||
.getGenerativeModel(
|
||||
@@ -123,7 +124,7 @@ export class LobeGoogleAI implements LobeRuntimeAI {
|
||||
.generateContentStream({
|
||||
contents,
|
||||
systemInstruction: payload.system as string,
|
||||
tools: this.buildGoogleTools(payload.tools),
|
||||
tools: this.buildGoogleTools(payload.tools, payload),
|
||||
});
|
||||
|
||||
const googleStream = convertIterableToStream(geminiStreamResult.stream);
|
||||
@@ -168,26 +169,30 @@ export class LobeGoogleAI implements LobeRuntimeAI {
|
||||
.map((model) => {
|
||||
const modelName = model.name.replace(/^models\//, '');
|
||||
|
||||
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((m) => modelName.toLowerCase() === m.id.toLowerCase());
|
||||
const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
|
||||
(m) => modelName.toLowerCase() === m.id.toLowerCase(),
|
||||
);
|
||||
|
||||
return {
|
||||
contextWindowTokens: model.inputTokenLimit + model.outputTokenLimit,
|
||||
displayName: model.displayName,
|
||||
enabled: knownModel?.enabled || false,
|
||||
functionCall:
|
||||
modelName.toLowerCase().includes('gemini') && !modelName.toLowerCase().includes('thinking')
|
||||
|| knownModel?.abilities?.functionCall
|
||||
|| false,
|
||||
(modelName.toLowerCase().includes('gemini') &&
|
||||
!modelName.toLowerCase().includes('thinking')) ||
|
||||
knownModel?.abilities?.functionCall ||
|
||||
false,
|
||||
id: modelName,
|
||||
reasoning:
|
||||
modelName.toLowerCase().includes('thinking')
|
||||
|| knownModel?.abilities?.reasoning
|
||||
|| false,
|
||||
modelName.toLowerCase().includes('thinking') ||
|
||||
knownModel?.abilities?.reasoning ||
|
||||
false,
|
||||
vision:
|
||||
modelName.toLowerCase().includes('vision')
|
||||
|| (modelName.toLowerCase().includes('gemini') && !modelName.toLowerCase().includes('gemini-1.0'))
|
||||
|| knownModel?.abilities?.vision
|
||||
|| false,
|
||||
modelName.toLowerCase().includes('vision') ||
|
||||
(modelName.toLowerCase().includes('gemini') &&
|
||||
!modelName.toLowerCase().includes('gemini-1.0')) ||
|
||||
knownModel?.abilities?.vision ||
|
||||
false,
|
||||
};
|
||||
})
|
||||
.filter(Boolean) as ChatModelCard[];
|
||||
@@ -266,43 +271,7 @@ export class LobeGoogleAI implements LobeRuntimeAI {
|
||||
};
|
||||
|
||||
// convert messages from the OpenAI format to Google GenAI SDK
|
||||
private buildGoogleMessages = async (
|
||||
messages: OpenAIChatMessage[],
|
||||
model: string,
|
||||
): Promise<Content[]> => {
|
||||
// if the model is gemini-1.0 we need to pair messages
|
||||
if (model.startsWith('gemini-1.0')) {
|
||||
const contents: Content[] = [];
|
||||
let lastRole = 'model';
|
||||
|
||||
for (const message of messages) {
|
||||
// current to filter function message
|
||||
if (message.role === 'function') {
|
||||
continue;
|
||||
}
|
||||
const googleMessage = await this.convertOAIMessagesToGoogleMessage(message);
|
||||
|
||||
// if the last message is a model message and the current message is a model message
|
||||
// then we need to add a user message to separate them
|
||||
if (lastRole === googleMessage.role) {
|
||||
contents.push({ parts: [{ text: '' }], role: lastRole === 'user' ? 'model' : 'user' });
|
||||
}
|
||||
|
||||
// add the current message to the contents
|
||||
contents.push(googleMessage);
|
||||
|
||||
// update the last role
|
||||
lastRole = googleMessage.role;
|
||||
}
|
||||
|
||||
// if the last message is a user message, then we need to add a model message to separate them
|
||||
if (lastRole === 'model') {
|
||||
contents.push({ parts: [{ text: '' }], role: 'user' });
|
||||
}
|
||||
|
||||
return contents;
|
||||
}
|
||||
|
||||
private buildGoogleMessages = async (messages: OpenAIChatMessage[]): Promise<Content[]> => {
|
||||
const pools = messages
|
||||
.filter((message) => message.role !== 'function')
|
||||
.map(async (msg) => await this.convertOAIMessagesToGoogleMessage(msg));
|
||||
@@ -353,7 +322,13 @@ export class LobeGoogleAI implements LobeRuntimeAI {
|
||||
|
||||
private buildGoogleTools(
|
||||
tools: ChatCompletionTool[] | undefined,
|
||||
payload?: ChatStreamPayload,
|
||||
): GoogleFunctionCallTool[] | undefined {
|
||||
// 目前 Tools (例如 googleSearch) 无法与其他 FunctionCall 同时使用
|
||||
if (payload?.enabledSearch) {
|
||||
return [{ googleSearch: {} } as GoogleSearchRetrievalTool];
|
||||
}
|
||||
|
||||
if (!tools || tools.length === 0) return;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import type { ChatModelCard } from '@/types/llm';
|
||||
|
||||
import { ModelProvider } from '../types';
|
||||
import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory';
|
||||
import { OpenRouterModelCard } from './type';
|
||||
|
||||
import type { ChatModelCard } from '@/types/llm';
|
||||
|
||||
export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
|
||||
baseURL: 'https://openrouter.ai/api/v1',
|
||||
chatCompletion: {
|
||||
@@ -11,6 +11,7 @@ export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
|
||||
return {
|
||||
...payload,
|
||||
include_reasoning: true,
|
||||
model: payload.enabledSearch ? `${payload.model}:online` : payload.model,
|
||||
stream: payload.stream ?? true,
|
||||
} as any;
|
||||
},
|
||||
@@ -27,10 +28,7 @@ export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
|
||||
models: async ({ client }) => {
|
||||
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
||||
|
||||
const visionKeywords = [
|
||||
'qwen/qvq',
|
||||
'vision'
|
||||
];
|
||||
const visionKeywords = ['qwen/qvq', 'vision'];
|
||||
|
||||
const reasoningKeywords = [
|
||||
'deepseek/deepseek-r1',
|
||||
@@ -41,12 +39,14 @@ export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
|
||||
'thinking',
|
||||
];
|
||||
|
||||
const modelsPage = await client.models.list() as any;
|
||||
const modelsPage = (await client.models.list()) as any;
|
||||
const modelList: OpenRouterModelCard[] = modelsPage.data;
|
||||
|
||||
return modelList
|
||||
.map((model) => {
|
||||
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.toLowerCase() === m.id.toLowerCase());
|
||||
const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
|
||||
(m) => model.id.toLowerCase() === m.id.toLowerCase(),
|
||||
);
|
||||
|
||||
return {
|
||||
contextWindowTokens: model.context_length,
|
||||
@@ -54,25 +54,25 @@ export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
|
||||
displayName: model.name,
|
||||
enabled: knownModel?.enabled || false,
|
||||
functionCall:
|
||||
model.description.includes('function calling')
|
||||
|| model.description.includes('tools')
|
||||
|| knownModel?.abilities?.functionCall
|
||||
|| false,
|
||||
model.description.includes('function calling') ||
|
||||
model.description.includes('tools') ||
|
||||
knownModel?.abilities?.functionCall ||
|
||||
false,
|
||||
id: model.id,
|
||||
maxTokens:
|
||||
typeof model.top_provider.max_completion_tokens === 'number'
|
||||
? model.top_provider.max_completion_tokens
|
||||
: undefined,
|
||||
reasoning:
|
||||
reasoningKeywords.some(keyword => model.id.toLowerCase().includes(keyword))
|
||||
|| knownModel?.abilities?.reasoning
|
||||
|| false,
|
||||
reasoningKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
||||
knownModel?.abilities?.reasoning ||
|
||||
false,
|
||||
vision:
|
||||
model.description.includes('vision')
|
||||
|| model.description.includes('multimodal')
|
||||
|| visionKeywords.some(keyword => model.id.toLowerCase().includes(keyword))
|
||||
|| knownModel?.abilities?.vision
|
||||
|| false,
|
||||
model.description.includes('vision') ||
|
||||
model.description.includes('multimodal') ||
|
||||
visionKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
||||
knownModel?.abilities?.vision ||
|
||||
false,
|
||||
};
|
||||
})
|
||||
.filter(Boolean) as ChatModelCard[];
|
||||
|
||||
@@ -203,8 +203,8 @@ describe('LobePerplexityAI', () => {
|
||||
expect(stream).toEqual(
|
||||
[
|
||||
'id: 506d64fb-e7f2-4d94-b80f-158369e9446d',
|
||||
'event: citations',
|
||||
'data: [{"title":"https://www.weather.com.cn/weather/101210101.shtml","url":"https://www.weather.com.cn/weather/101210101.shtml"},{"title":"https://tianqi.moji.com/weather/china/zhejiang/hangzhou","url":"https://tianqi.moji.com/weather/china/zhejiang/hangzhou"},{"title":"https://weather.cma.cn/web/weather/58457.html","url":"https://weather.cma.cn/web/weather/58457.html"},{"title":"https://tianqi.so.com/weather/101210101","url":"https://tianqi.so.com/weather/101210101"},{"title":"https://www.accuweather.com/zh/cn/hangzhou/106832/weather-forecast/106832","url":"https://www.accuweather.com/zh/cn/hangzhou/106832/weather-forecast/106832"},{"title":"https://www.hzqx.com","url":"https://www.hzqx.com"},{"title":"https://www.hzqx.com/pc/hztq/","url":"https://www.hzqx.com/pc/hztq/"}]\n',
|
||||
'event: grounding',
|
||||
'data: {"citations":[{"title":"https://www.weather.com.cn/weather/101210101.shtml","url":"https://www.weather.com.cn/weather/101210101.shtml"},{"title":"https://tianqi.moji.com/weather/china/zhejiang/hangzhou","url":"https://tianqi.moji.com/weather/china/zhejiang/hangzhou"},{"title":"https://weather.cma.cn/web/weather/58457.html","url":"https://weather.cma.cn/web/weather/58457.html"},{"title":"https://tianqi.so.com/weather/101210101","url":"https://tianqi.so.com/weather/101210101"},{"title":"https://www.accuweather.com/zh/cn/hangzhou/106832/weather-forecast/106832","url":"https://www.accuweather.com/zh/cn/hangzhou/106832/weather-forecast/106832"},{"title":"https://www.hzqx.com","url":"https://www.hzqx.com"},{"title":"https://www.hzqx.com/pc/hztq/","url":"https://www.hzqx.com/pc/hztq/"}]}\n',
|
||||
'id: 506d64fb-e7f2-4d94-b80f-158369e9446d',
|
||||
'event: text',
|
||||
'data: "杭州今"\n',
|
||||
|
||||
@@ -1,24 +1,13 @@
|
||||
import type { ChatModelCard } from '@/types/llm';
|
||||
|
||||
import { ModelProvider } from '../types';
|
||||
import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory';
|
||||
|
||||
import { QwenAIStream } from '../utils/streams';
|
||||
|
||||
import type { ChatModelCard } from '@/types/llm';
|
||||
|
||||
export interface QwenModelCard {
|
||||
id: string;
|
||||
}
|
||||
|
||||
/*
|
||||
QwenEnableSearchModelSeries: An array of Qwen model series that support the enable_search parameter.
|
||||
Currently, enable_search is only supported on Qwen commercial series, excluding Qwen-VL and Qwen-Long series.
|
||||
*/
|
||||
export const QwenEnableSearchModelSeries = [
|
||||
'qwen-max',
|
||||
'qwen-plus',
|
||||
'qwen-turbo',
|
||||
];
|
||||
|
||||
/*
|
||||
QwenLegacyModels: A set of legacy Qwen models that do not support presence_penalty.
|
||||
Currently, presence_penalty is only supported on Qwen commercial models and open-source models starting from Qwen 1.5 and later.
|
||||
@@ -35,30 +24,34 @@ export const LobeQwenAI = LobeOpenAICompatibleFactory({
|
||||
baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
||||
chatCompletion: {
|
||||
handlePayload: (payload) => {
|
||||
const { model, presence_penalty, temperature, top_p, ...rest } = payload;
|
||||
const { model, presence_penalty, temperature, top_p, enabledSearch, ...rest } = payload;
|
||||
|
||||
return {
|
||||
...rest,
|
||||
frequency_penalty: undefined,
|
||||
model,
|
||||
presence_penalty:
|
||||
QwenLegacyModels.has(model)
|
||||
? undefined
|
||||
: (presence_penalty !== undefined && presence_penalty >= -2 && presence_penalty <= 2)
|
||||
? presence_penalty
|
||||
: undefined,
|
||||
presence_penalty: QwenLegacyModels.has(model)
|
||||
? undefined
|
||||
: presence_penalty !== undefined && presence_penalty >= -2 && presence_penalty <= 2
|
||||
? presence_penalty
|
||||
: undefined,
|
||||
stream: !payload.tools,
|
||||
temperature: (temperature !== undefined && temperature >= 0 && temperature < 2) ? temperature : undefined,
|
||||
...(model.startsWith('qvq') || model.startsWith('qwen-vl') ? {
|
||||
top_p: (top_p !== undefined && top_p > 0 && top_p <= 1) ? top_p : undefined,
|
||||
} : {
|
||||
top_p: (top_p !== undefined && top_p > 0 && top_p < 1) ? top_p : undefined,
|
||||
}),
|
||||
...(process.env.QWEN_ENABLE_SEARCH === '1' && QwenEnableSearchModelSeries.some(prefix => model.startsWith(prefix)) && {
|
||||
enable_search: true,
|
||||
temperature:
|
||||
temperature !== undefined && temperature >= 0 && temperature < 2
|
||||
? temperature
|
||||
: undefined,
|
||||
...(model.startsWith('qvq') || model.startsWith('qwen-vl')
|
||||
? {
|
||||
top_p: top_p !== undefined && top_p > 0 && top_p <= 1 ? top_p : undefined,
|
||||
}
|
||||
: {
|
||||
top_p: top_p !== undefined && top_p > 0 && top_p < 1 ? top_p : undefined,
|
||||
}),
|
||||
...(enabledSearch && {
|
||||
enable_search: enabledSearch,
|
||||
search_options: {
|
||||
search_strategy: process.env.QWEN_SEARCH_STRATEGY || 'standard', // standard or pro
|
||||
}
|
||||
},
|
||||
}),
|
||||
...(payload.tools && {
|
||||
parallel_tool_calls: true,
|
||||
@@ -73,48 +66,38 @@ export const LobeQwenAI = LobeOpenAICompatibleFactory({
|
||||
models: async ({ client }) => {
|
||||
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
||||
|
||||
const functionCallKeywords = [
|
||||
'qwen-max',
|
||||
'qwen-plus',
|
||||
'qwen-turbo',
|
||||
'qwen2.5',
|
||||
];
|
||||
const functionCallKeywords = ['qwen-max', 'qwen-plus', 'qwen-turbo', 'qwen2.5'];
|
||||
|
||||
const visionKeywords = [
|
||||
'qvq',
|
||||
'vl',
|
||||
];
|
||||
const visionKeywords = ['qvq', 'vl'];
|
||||
|
||||
const reasoningKeywords = [
|
||||
'qvq',
|
||||
'qwq',
|
||||
'deepseek-r1'
|
||||
];
|
||||
const reasoningKeywords = ['qvq', 'qwq', 'deepseek-r1'];
|
||||
|
||||
const modelsPage = await client.models.list() as any;
|
||||
const modelsPage = (await client.models.list()) as any;
|
||||
const modelList: QwenModelCard[] = modelsPage.data;
|
||||
|
||||
return modelList
|
||||
.map((model) => {
|
||||
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.toLowerCase() === m.id.toLowerCase());
|
||||
const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
|
||||
(m) => model.id.toLowerCase() === m.id.toLowerCase(),
|
||||
);
|
||||
|
||||
return {
|
||||
contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
|
||||
displayName: knownModel?.displayName ?? undefined,
|
||||
enabled: knownModel?.enabled || false,
|
||||
functionCall:
|
||||
functionCallKeywords.some(keyword => model.id.toLowerCase().includes(keyword))
|
||||
|| knownModel?.abilities?.functionCall
|
||||
|| false,
|
||||
functionCallKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
||||
knownModel?.abilities?.functionCall ||
|
||||
false,
|
||||
id: model.id,
|
||||
reasoning:
|
||||
reasoningKeywords.some(keyword => model.id.toLowerCase().includes(keyword))
|
||||
|| knownModel?.abilities?.reasoning
|
||||
|| false,
|
||||
reasoningKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
||||
knownModel?.abilities?.reasoning ||
|
||||
false,
|
||||
vision:
|
||||
visionKeywords.some(keyword => model.id.toLowerCase().includes(keyword))
|
||||
|| knownModel?.abilities?.vision
|
||||
|| false,
|
||||
visionKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
||||
knownModel?.abilities?.vision ||
|
||||
false,
|
||||
};
|
||||
})
|
||||
.filter(Boolean) as ChatModelCard[];
|
||||
|
||||
@@ -38,6 +38,10 @@ export interface OpenAIChatMessage {
|
||||
* @title Chat Stream Payload
|
||||
*/
|
||||
export interface ChatStreamPayload {
|
||||
/**
|
||||
* 是否开启搜索
|
||||
*/
|
||||
enabledSearch?: boolean;
|
||||
/**
|
||||
* @title 控制生成文本中的惩罚系数,用于减少重复性
|
||||
* @default 0
|
||||
@@ -68,11 +72,11 @@ export interface ChatStreamPayload {
|
||||
* @default 0
|
||||
*/
|
||||
presence_penalty?: number;
|
||||
|
||||
/**
|
||||
* @default openai
|
||||
*/
|
||||
provider?: string;
|
||||
|
||||
responseMode?: 'streamText' | 'json';
|
||||
/**
|
||||
* @title 是否开启流式请求
|
||||
@@ -85,8 +89,8 @@ export interface ChatStreamPayload {
|
||||
*/
|
||||
temperature: number;
|
||||
tool_choice?: string;
|
||||
tools?: ChatCompletionTool[];
|
||||
|
||||
tools?: ChatCompletionTool[];
|
||||
/**
|
||||
* @title 控制生成文本中最高概率的单个令牌
|
||||
* @default 1
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { EnhancedGenerateContentResponse } from '@google/generative-ai';
|
||||
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
import { nanoid } from '@/utils/uuid';
|
||||
|
||||
import { ChatStreamCallbacks } from '../../types';
|
||||
@@ -14,8 +15,8 @@ import {
|
||||
|
||||
const transformGoogleGenerativeAIStream = (
|
||||
chunk: EnhancedGenerateContentResponse,
|
||||
stack: StreamContext,
|
||||
): StreamProtocolChunk => {
|
||||
context: StreamContext,
|
||||
): StreamProtocolChunk | StreamProtocolChunk[] => {
|
||||
// maybe need another structure to add support for multiple choices
|
||||
const functionCalls = chunk.functionCalls();
|
||||
|
||||
@@ -32,15 +33,39 @@ const transformGoogleGenerativeAIStream = (
|
||||
type: 'function',
|
||||
}),
|
||||
),
|
||||
id: stack.id,
|
||||
id: context.id,
|
||||
type: 'tool_calls',
|
||||
};
|
||||
}
|
||||
const text = chunk.text();
|
||||
|
||||
if (chunk.candidates && chunk.candidates[0].groundingMetadata) {
|
||||
const { webSearchQueries, groundingSupports, groundingChunks } =
|
||||
chunk.candidates[0].groundingMetadata;
|
||||
console.log({ groundingChunks, groundingSupports, webSearchQueries });
|
||||
|
||||
return [
|
||||
{ data: text, id: context.id, type: 'text' },
|
||||
{
|
||||
data: {
|
||||
citations: groundingChunks?.map((chunk) => ({
|
||||
// google 返回的 uri 是经过 google 自己处理过的 url,因此无法展现真实的 favicon
|
||||
// 需要使用 title 作为替换
|
||||
favicon: chunk.web?.title,
|
||||
title: chunk.web?.title,
|
||||
url: chunk.web?.uri,
|
||||
})),
|
||||
searchQueries: webSearchQueries,
|
||||
} as GroundingSearch,
|
||||
id: context.id,
|
||||
type: 'grounding',
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
return {
|
||||
data: text,
|
||||
id: stack?.id,
|
||||
id: context?.id,
|
||||
type: 'text',
|
||||
};
|
||||
};
|
||||
|
||||
@@ -127,7 +127,7 @@ export const transformOpenAIStream = (
|
||||
);
|
||||
|
||||
return [
|
||||
{ data: citations, id: chunk.id, type: 'citations' },
|
||||
{ data: { citations }, id: chunk.id, type: 'grounding' },
|
||||
{ data: content, id: chunk.id, type: 'text' },
|
||||
];
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ export interface StreamProtocolChunk {
|
||||
// Model Thinking
|
||||
| 'reasoning'
|
||||
// Search or Grounding
|
||||
| 'citations'
|
||||
| 'grounding'
|
||||
// stop signal
|
||||
| 'stop'
|
||||
// Error
|
||||
|
||||
@@ -32,6 +32,9 @@ export default {
|
||||
},
|
||||
duplicateTitle: '{{title}} 副本',
|
||||
emptyAgent: '暂无助手',
|
||||
extendControls: {
|
||||
title: '模型扩展功能',
|
||||
},
|
||||
historyRange: '历史范围',
|
||||
historySummary: '历史消息总结',
|
||||
inbox: {
|
||||
@@ -86,6 +89,31 @@ export default {
|
||||
},
|
||||
regenerate: '重新生成',
|
||||
roleAndArchive: '角色与记录',
|
||||
search: {
|
||||
grounding: {
|
||||
searchQueries: '搜索关键词',
|
||||
title: '已搜索到 {{count}} 个结果',
|
||||
},
|
||||
|
||||
mode: {
|
||||
auto: {
|
||||
desc: '根据对话内容智能判断是否需要搜索',
|
||||
title: '智能联网',
|
||||
},
|
||||
disable: '当前模型不支持函数调用,因此无法使用智能联网功能',
|
||||
off: {
|
||||
desc: '仅使用模型的基础知识,不进行网络搜索',
|
||||
title: '关闭联网',
|
||||
},
|
||||
on: {
|
||||
desc: '持续进行网络搜索,获取最新信息',
|
||||
title: '始终联网',
|
||||
},
|
||||
useModelBuiltin: '使用模型内置搜索引擎',
|
||||
},
|
||||
|
||||
title: '联网搜索',
|
||||
},
|
||||
searchAgentPlaceholder: '搜索助手...',
|
||||
sendPlaceholder: '输入聊天内容...',
|
||||
sessionGroup: {
|
||||
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
import { filesPrompts } from '@/prompts/files';
|
||||
import { BuiltinSystemRolePrompts } from '@/prompts/systemRole';
|
||||
import { aiModelSelectors, aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra';
|
||||
import { getAgentChatConfig } from '@/store/chat/slices/aiChat/actions/helpers';
|
||||
import { useSessionStore } from '@/store/session';
|
||||
import { sessionMetaSelectors } from '@/store/session/selectors';
|
||||
import { useToolStore } from '@/store/tool';
|
||||
@@ -224,6 +225,8 @@ class ChatService {
|
||||
|
||||
const { provider = ModelProvider.OpenAI, ...res } = params;
|
||||
|
||||
// =================== process model =================== //
|
||||
// ===================================================== //
|
||||
let model = res.model || DEFAULT_AGENT_CONFIG.model;
|
||||
|
||||
// if the provider is Azure, get the deployment name as the request model
|
||||
@@ -238,6 +241,13 @@ class ChatService {
|
||||
model = findDeploymentName(model, provider);
|
||||
}
|
||||
|
||||
// =================== process search =================== //
|
||||
// ===================================================== //
|
||||
const chatConfig = getAgentChatConfig();
|
||||
if (chatConfig.searchMode !== 'off') {
|
||||
res.enabledSearch = true;
|
||||
}
|
||||
|
||||
const payload = merge(
|
||||
{ model: DEFAULT_AGENT_CONFIG.model, stream: true, ...DEFAULT_AGENT_CONFIG.params },
|
||||
{ ...res, model },
|
||||
|
||||
@@ -9,6 +9,7 @@ exports[`agentSelectors > defaultAgentConfig > should merge DEFAULT_AGENT_CONFIG
|
||||
"enableCompressHistory": true,
|
||||
"enableHistoryCount": true,
|
||||
"historyCount": 8,
|
||||
"searchMode": "off",
|
||||
},
|
||||
"model": "gpt-3.5-turbo",
|
||||
"params": {
|
||||
|
||||
@@ -107,6 +107,8 @@ const currentEnabledKnowledge = (s: AgentStore) => {
|
||||
] as KnowledgeItem[];
|
||||
};
|
||||
|
||||
const agentSearchMode = (s: AgentStore) => currentAgentChatConfig(s).searchMode || 'off';
|
||||
|
||||
const hasSystemRole = (s: AgentStore) => {
|
||||
const config = currentAgentConfig(s);
|
||||
|
||||
@@ -140,7 +142,10 @@ const currentKnowledgeIds = (s: AgentStore) => {
|
||||
|
||||
const isAgentConfigLoading = (s: AgentStore) => !s.agentConfigInitMap[s.activeId];
|
||||
|
||||
const isAgentEnableSearch = (s: AgentStore) => agentSearchMode(s) !== 'off';
|
||||
|
||||
export const agentSelectors = {
|
||||
agentSearchMode,
|
||||
currentAgentChatConfig,
|
||||
currentAgentConfig,
|
||||
currentAgentFiles,
|
||||
@@ -160,5 +165,6 @@ export const agentSelectors = {
|
||||
inboxAgentConfig,
|
||||
inboxAgentModel,
|
||||
isAgentConfigLoading,
|
||||
isAgentEnableSearch,
|
||||
isInboxSession,
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { AIProviderStoreState } from '@/store/aiInfra/initialState';
|
||||
import { AiModelSourceEnum } from '@/types/aiModel';
|
||||
import { ModelSearchImplement } from '@/types/search';
|
||||
|
||||
const aiProviderChatModelListIds = (s: AIProviderStoreState) =>
|
||||
s.aiProviderModelList.filter((item) => item.type === 'chat').map((item) => item.id);
|
||||
@@ -69,20 +70,55 @@ const modelContextWindowTokens = (id: string, provider: string) => (s: AIProvide
|
||||
return model?.contextWindowTokens;
|
||||
};
|
||||
|
||||
const modelExtendControls = (id: string, provider: string) => (s: AIProviderStoreState) => {
|
||||
const model = getEnabledModelById(id, provider)(s);
|
||||
|
||||
return model?.settings?.extendControls;
|
||||
};
|
||||
|
||||
const isModelHasExtendControls = (id: string, provider: string) => (s: AIProviderStoreState) => {
|
||||
const controls = modelExtendControls(id, provider)(s);
|
||||
|
||||
return !!controls && controls.length > 0;
|
||||
};
|
||||
|
||||
const isModelHasBuiltinSearch = (id: string, provider: string) => (s: AIProviderStoreState) => {
|
||||
const model = getEnabledModelById(id, provider)(s);
|
||||
|
||||
return !!model?.settings?.searchImpl;
|
||||
};
|
||||
|
||||
const isModelHasBuiltinSearchConfig =
|
||||
(id: string, provider: string) => (s: AIProviderStoreState) => {
|
||||
const model = getEnabledModelById(id, provider)(s);
|
||||
|
||||
return (
|
||||
!!model?.settings?.searchImpl &&
|
||||
[ModelSearchImplement.Tool, ModelSearchImplement.Params].includes(
|
||||
model?.settings?.searchImpl as ModelSearchImplement,
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
export const aiModelSelectors = {
|
||||
aiProviderChatModelListIds,
|
||||
disabledAiProviderModelList,
|
||||
enabledAiProviderModelList,
|
||||
filteredAiProviderModelList,
|
||||
getAiModelById,
|
||||
getEnabledModelById,
|
||||
hasRemoteModels,
|
||||
isEmptyAiProviderModelList,
|
||||
isModelEnabled,
|
||||
isModelHasBuiltinSearch,
|
||||
isModelHasBuiltinSearchConfig,
|
||||
isModelHasContextWindowToken,
|
||||
isModelHasExtendControls,
|
||||
isModelLoading,
|
||||
isModelSupportReasoning,
|
||||
isModelSupportToolUse,
|
||||
isModelSupportVision,
|
||||
modelContextWindowTokens,
|
||||
modelExtendControls,
|
||||
totalAiProviderModelList,
|
||||
};
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { EnabledProviderWithModels } from '@/types/aiModel';
|
||||
import { EnabledAiModel } from '@/types/aiModel';
|
||||
import {
|
||||
AiProviderDetailItem,
|
||||
AiProviderListItem,
|
||||
AiProviderRuntimeConfig,
|
||||
EnabledAiModel,
|
||||
EnabledProvider,
|
||||
EnabledProviderWithModels,
|
||||
} from '@/types/aiProvider';
|
||||
|
||||
export interface AIProviderState {
|
||||
|
||||
@@ -87,6 +87,18 @@ const providerKeyVaults = (provider: string | undefined) => (s: AIProviderStoreS
|
||||
return s.aiProviderRuntimeConfig?.[provider]?.keyVaults;
|
||||
};
|
||||
|
||||
const isProviderHasBuiltinSearch = (provider: string) => (s: AIProviderStoreState) => {
|
||||
const config = providerConfigById(provider)(s);
|
||||
|
||||
return !!config?.settings.searchMode;
|
||||
};
|
||||
|
||||
const isProviderHasBuiltinSearchConfig = (id: string) => (s: AIProviderStoreState) => {
|
||||
const providerCfg = providerConfigById(id)(s);
|
||||
|
||||
return !!providerCfg?.settings.searchMode && providerCfg?.settings.searchMode !== 'internal';
|
||||
};
|
||||
|
||||
export const aiProviderSelectors = {
|
||||
activeProviderConfig,
|
||||
disabledAiProviderList,
|
||||
@@ -97,6 +109,8 @@ export const aiProviderSelectors = {
|
||||
isProviderConfigUpdating,
|
||||
isProviderEnabled,
|
||||
isProviderFetchOnClient,
|
||||
isProviderHasBuiltinSearch,
|
||||
isProviderHasBuiltinSearchConfig,
|
||||
isProviderLoading,
|
||||
providerConfigById,
|
||||
providerKeyVaults,
|
||||
|
||||
@@ -455,7 +455,7 @@ export const generateAIChat: StateCreator<
|
||||
await messageService.updateMessageError(messageId, error);
|
||||
await refreshMessages();
|
||||
},
|
||||
onFinish: async (content, { traceId, observationId, toolCalls, reasoning, citations }) => {
|
||||
onFinish: async (content, { traceId, observationId, toolCalls, reasoning, grounding }) => {
|
||||
// if there is traceId, update it
|
||||
if (traceId) {
|
||||
msgTraceId = traceId;
|
||||
@@ -473,19 +473,29 @@ export const generateAIChat: StateCreator<
|
||||
await internal_updateMessageContent(messageId, content, {
|
||||
toolCalls,
|
||||
reasoning: !!reasoning ? { content: reasoning, duration } : undefined,
|
||||
search: !!citations ? { citations } : undefined,
|
||||
search: !!grounding?.citations ? grounding : undefined,
|
||||
});
|
||||
},
|
||||
onMessageHandle: async (chunk) => {
|
||||
switch (chunk.type) {
|
||||
case 'citations': {
|
||||
case 'grounding': {
|
||||
// if there is no citations, then stop
|
||||
if (!chunk.citations || chunk.citations.length <= 0) return;
|
||||
if (
|
||||
!chunk.grounding ||
|
||||
!chunk.grounding.citations ||
|
||||
chunk.grounding.citations.length <= 0
|
||||
)
|
||||
return;
|
||||
|
||||
internal_dispatchMessage({
|
||||
id: messageId,
|
||||
type: 'updateMessage',
|
||||
value: { search: { citations: chunk.citations } },
|
||||
value: {
|
||||
search: {
|
||||
citations: chunk.grounding.citations,
|
||||
searchQueries: chunk.grounding.searchQueries,
|
||||
},
|
||||
},
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ import {
|
||||
ChatMessage,
|
||||
ChatMessageError,
|
||||
CreateMessageParams,
|
||||
GroundingSearch,
|
||||
MessageToolCall,
|
||||
ModelReasoning,
|
||||
} from '@/types/message';
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
import { TraceEventPayloads } from '@/types/trace';
|
||||
import { setNamespace } from '@/utils/storeDebug';
|
||||
import { nanoid } from '@/utils/uuid';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { uniqBy } from 'lodash-es';
|
||||
|
||||
import { filterEnabledModels } from '@/config/modelProviders';
|
||||
import { EnabledProviderWithModels } from '@/types/aiModel';
|
||||
import { EnabledProviderWithModels } from '@/types/aiProvider';
|
||||
import { ChatModelCard, ModelProviderCard } from '@/types/llm';
|
||||
import { ServerModelProviderConfig } from '@/types/serverConfig';
|
||||
import { GlobalLLMProviderKey } from '@/types/user/settings';
|
||||
|
||||
@@ -76,6 +76,7 @@ exports[`settingsSelectors > defaultAgent > should merge DEFAULT_AGENT and s.set
|
||||
"enableCompressHistory": true,
|
||||
"enableHistoryCount": true,
|
||||
"historyCount": 8,
|
||||
"searchMode": "off",
|
||||
},
|
||||
"model": "gpt-3.5-turbo",
|
||||
"params": {
|
||||
|
||||
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
||||
import { FileItem } from '@/types/files';
|
||||
import { KnowledgeBaseItem } from '@/types/knowledgeBase';
|
||||
import { FewShots, LLMParams } from '@/types/llm';
|
||||
import { SearchMode } from '@/types/search';
|
||||
|
||||
export type TTSServer = 'openai' | 'edge' | 'microsoft';
|
||||
|
||||
@@ -78,6 +79,8 @@ export interface LobeAgentChatConfig {
|
||||
*/
|
||||
historyCount?: number;
|
||||
inputTemplate?: string;
|
||||
searchMode?: SearchMode;
|
||||
useModelBuiltinSearch?: boolean;
|
||||
}
|
||||
|
||||
export const AgentChatConfigSchema = z.object({
|
||||
@@ -89,6 +92,7 @@ export const AgentChatConfigSchema = z.object({
|
||||
enableMaxTokens: z.boolean().optional(),
|
||||
enableReasoningEffort: z.boolean().optional(),
|
||||
historyCount: z.number().optional(),
|
||||
searchMode: z.enum(['off', 'on', 'auto']).optional(),
|
||||
});
|
||||
|
||||
export type LobeAgentConfigKeys =
|
||||
|
||||
+35
-8
@@ -1,7 +1,5 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { AiProviderSourceType } from '@/types/aiProvider';
|
||||
|
||||
export type ModelPriceCurrency = 'CNY' | 'USD';
|
||||
|
||||
export const AiModelSourceEnum = {
|
||||
@@ -133,6 +131,29 @@ export interface AiModelConfig {
|
||||
* used in azure and doubao
|
||||
*/
|
||||
deploymentName?: string;
|
||||
|
||||
/**
|
||||
* qwen series model enabled search
|
||||
*/
|
||||
enabledSearch?: boolean;
|
||||
}
|
||||
|
||||
export interface ExtendedControl {
|
||||
key: string;
|
||||
requestParams: string | string[];
|
||||
type: 'params' | 'tool';
|
||||
valueType: 'boolean';
|
||||
}
|
||||
|
||||
export type ModelSearchImplementType = 'tool' | 'params' | 'internal';
|
||||
|
||||
export interface AiModelSettings {
|
||||
extendControls?: ExtendedControl[];
|
||||
/**
|
||||
* 模型层实现搜索的方式
|
||||
*/
|
||||
searchImpl?: ModelSearchImplementType;
|
||||
searchProvider?: string;
|
||||
}
|
||||
|
||||
export interface AIChatModelCard extends AIBaseModelCard {
|
||||
@@ -140,6 +161,7 @@ export interface AIChatModelCard extends AIBaseModelCard {
|
||||
config?: AiModelConfig;
|
||||
maxOutput?: number;
|
||||
pricing?: ChatModelPricing;
|
||||
settings?: AiModelSettings;
|
||||
type: 'chat';
|
||||
}
|
||||
|
||||
@@ -306,17 +328,22 @@ export type ToggleAiModelEnableParams = z.infer<typeof ToggleAiModelEnableSchema
|
||||
|
||||
//
|
||||
|
||||
interface AiModelForSelect {
|
||||
export interface AiModelForSelect {
|
||||
abilities: ModelAbilities;
|
||||
contextWindowTokens?: number;
|
||||
displayName?: string;
|
||||
id: string;
|
||||
}
|
||||
|
||||
export interface EnabledProviderWithModels {
|
||||
children: AiModelForSelect[];
|
||||
export interface EnabledAiModel {
|
||||
abilities: ModelAbilities;
|
||||
config?: AiModelConfig;
|
||||
contextWindowTokens?: number;
|
||||
displayName?: string;
|
||||
enabled?: boolean;
|
||||
id: string;
|
||||
logo?: string;
|
||||
name: string;
|
||||
source: AiProviderSourceType;
|
||||
providerId: string;
|
||||
settings?: AiModelSettings;
|
||||
sort?: number;
|
||||
type: AiModelType;
|
||||
}
|
||||
|
||||
+7
-10
@@ -1,6 +1,6 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { AiModelConfig, AiModelType, ModelAbilities } from '@/types/aiModel';
|
||||
import { AiModelForSelect, EnabledAiModel, ModelSearchImplementType } from '@/types/aiModel';
|
||||
import { SmoothingParams } from '@/types/llm';
|
||||
|
||||
export const AiProviderSourceEnum = {
|
||||
@@ -96,6 +96,7 @@ export interface AiProviderSettings {
|
||||
* default openai
|
||||
*/
|
||||
sdkType?: AiProviderSDKType;
|
||||
searchMode?: ModelSearchImplementType;
|
||||
showAddNewModel?: boolean;
|
||||
/**
|
||||
* whether show api key in the provider config
|
||||
@@ -199,16 +200,12 @@ export interface EnabledProvider {
|
||||
source: AiProviderSourceType;
|
||||
}
|
||||
|
||||
export interface EnabledAiModel {
|
||||
abilities: ModelAbilities;
|
||||
config?: AiModelConfig;
|
||||
contextWindowTokens?: number;
|
||||
displayName?: string;
|
||||
enabled?: boolean;
|
||||
export interface EnabledProviderWithModels {
|
||||
children: AiModelForSelect[];
|
||||
id: string;
|
||||
providerId: string;
|
||||
sort?: number;
|
||||
type: AiModelType;
|
||||
logo?: string;
|
||||
name: string;
|
||||
source: AiProviderSourceType;
|
||||
}
|
||||
|
||||
export interface AiProviderRuntimeConfig {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
|
||||
export interface CitationItem {
|
||||
id?: string;
|
||||
onlyUrl?: boolean;
|
||||
@@ -5,11 +7,6 @@ export interface CitationItem {
|
||||
url: string;
|
||||
}
|
||||
|
||||
export interface GroundingSearch {
|
||||
citations?: CitationItem[];
|
||||
searchQueries?: string[];
|
||||
}
|
||||
|
||||
export interface ModelReasoning {
|
||||
content?: string;
|
||||
duration?: number;
|
||||
|
||||
@@ -2,11 +2,13 @@ import { IPluginErrorType } from '@lobehub/chat-plugin-sdk';
|
||||
|
||||
import { ILobeAgentRuntimeErrorType } from '@/libs/agent-runtime';
|
||||
import { ErrorType } from '@/types/fetch';
|
||||
import { GroundingSearch, MessageRoleType, ModelReasoning } from '@/types/message/base';
|
||||
import { ChatPluginPayload, ChatToolPayload } from '@/types/message/tools';
|
||||
import { Translate } from '@/types/message/translate';
|
||||
import { MetaData } from '@/types/meta';
|
||||
import { MessageSemanticSearchChunk } from '@/types/rag';
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
|
||||
import { MessageRoleType, ModelReasoning } from './base';
|
||||
import { ChatPluginPayload, ChatToolPayload } from './tools';
|
||||
import { Translate } from './translate';
|
||||
|
||||
/**
|
||||
* 聊天消息错误对象
|
||||
|
||||
@@ -42,6 +42,10 @@ export interface OpenAIChatMessage {
|
||||
* @title Chat Stream Payload
|
||||
*/
|
||||
export interface ChatStreamPayload {
|
||||
/**
|
||||
* 是否开启搜索
|
||||
*/
|
||||
enabledSearch?: boolean;
|
||||
/**
|
||||
* @title 控制生成文本中的惩罚系数,用于减少重复性
|
||||
* @default 0
|
||||
@@ -64,6 +68,7 @@ export interface ChatStreamPayload {
|
||||
*/
|
||||
n?: number;
|
||||
/**
|
||||
* @deprecated
|
||||
* 开启的插件列表
|
||||
*/
|
||||
plugins?: string[];
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
export type SearchMode = 'off' | 'auto' | 'on';
|
||||
|
||||
export enum ModelSearchImplement {
|
||||
/**
|
||||
* 模型内置了搜索功能
|
||||
* 类似 Jina 、PPLX 等模型的搜索模式,让调用方无感知
|
||||
*/
|
||||
Internal = 'internal',
|
||||
/**
|
||||
* 使用参数开关的方式,例如 Qwen、Google、OpenRouter,搜索结果在
|
||||
*/
|
||||
Params = 'params',
|
||||
/**
|
||||
* 使用工具调用的方式
|
||||
*/
|
||||
Tool = 'tool',
|
||||
}
|
||||
|
||||
export interface CitationItem {
|
||||
favicon?: string;
|
||||
id?: string;
|
||||
title?: string;
|
||||
url: string;
|
||||
}
|
||||
|
||||
export interface GroundingSearch {
|
||||
citations?: CitationItem[];
|
||||
searchQueries?: string[];
|
||||
}
|
||||
+11
-11
@@ -6,11 +6,11 @@ import { ChatErrorType } from '@/types/fetch';
|
||||
import { SmoothingParams } from '@/types/llm';
|
||||
import {
|
||||
ChatMessageError,
|
||||
CitationItem,
|
||||
MessageToolCall,
|
||||
MessageToolCallChunk,
|
||||
MessageToolCallSchema,
|
||||
} from '@/types/message';
|
||||
import { GroundingSearch } from '@/types/search';
|
||||
|
||||
import { fetchEventSource } from './fetchEventSource';
|
||||
import { getMessageError } from './parseError';
|
||||
@@ -21,7 +21,7 @@ type SSEFinishType = 'done' | 'error' | 'abort';
|
||||
export type OnFinishHandler = (
|
||||
text: string,
|
||||
context: {
|
||||
citations?: CitationItem[];
|
||||
grounding?: GroundingSearch;
|
||||
observationId?: string | null;
|
||||
reasoning?: string;
|
||||
toolCalls?: MessageToolCall[];
|
||||
@@ -40,9 +40,9 @@ export interface MessageReasoningChunk {
|
||||
type: 'reasoning';
|
||||
}
|
||||
|
||||
export interface MessageCitationsChunk {
|
||||
citations: CitationItem[];
|
||||
type: 'citations';
|
||||
export interface MessageGroundingChunk {
|
||||
grounding: GroundingSearch;
|
||||
type: 'grounding';
|
||||
}
|
||||
|
||||
interface MessageToolCallsChunk {
|
||||
@@ -57,7 +57,7 @@ export interface FetchSSEOptions {
|
||||
onErrorHandle?: (error: ChatMessageError) => void;
|
||||
onFinish?: OnFinishHandler;
|
||||
onMessageHandle?: (
|
||||
chunk: MessageTextChunk | MessageToolCallsChunk | MessageReasoningChunk | MessageCitationsChunk,
|
||||
chunk: MessageTextChunk | MessageToolCallsChunk | MessageReasoningChunk | MessageGroundingChunk,
|
||||
) => void;
|
||||
smoothing?: SmoothingParams | boolean;
|
||||
}
|
||||
@@ -286,7 +286,7 @@ export const fetchSSE = async (url: string, options: RequestInit & FetchSSEOptio
|
||||
startSpeed: smoothingSpeed,
|
||||
});
|
||||
|
||||
let citations: CitationItem[] | undefined = undefined;
|
||||
let grounding: GroundingSearch | undefined = undefined;
|
||||
await fetchEventSource(url, {
|
||||
body: options.body,
|
||||
fetch: options?.fetcher,
|
||||
@@ -359,9 +359,9 @@ export const fetchSSE = async (url: string, options: RequestInit & FetchSSEOptio
|
||||
break;
|
||||
}
|
||||
|
||||
case 'citations': {
|
||||
citations = data;
|
||||
options.onMessageHandle?.({ citations: data, type: 'citations' });
|
||||
case 'grounding': {
|
||||
grounding = data;
|
||||
options.onMessageHandle?.({ grounding: data, type: 'grounding' });
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -434,7 +434,7 @@ export const fetchSSE = async (url: string, options: RequestInit & FetchSSEOptio
|
||||
}
|
||||
|
||||
await options?.onFinish?.(output, {
|
||||
citations,
|
||||
grounding,
|
||||
observationId,
|
||||
reasoning: !!thinking ? thinking : undefined,
|
||||
toolCalls,
|
||||
|
||||
Reference in New Issue
Block a user