diff --git a/locales/ar/chat.json b/locales/ar/chat.json index 3997b986ed2c2..30dd7e61d26ca 100644 --- a/locales/ar/chat.json +++ b/locales/ar/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "لا يوجد مساعد", "historyRange": "نطاق التاريخ", "inbox": { - "defaultMessage": "مرحبًا، أنا مساعدك الذكي، يمكنك أن تسألني أي شيء وسأحاول الإجابة عليك. إذا كنت بحاجة إلى مساعد أكثر احترافية أو مخصصة، يمكنك النقر على `+` لإنشاء مساعد مخصص", "desc": "قم بتشغيل مجموعة الدماغ وأشعل شرارة التفكير. مساعدك الذكي، هنا حيث يمكنك التواصل بكل شيء", "title": "دردشة عشوائية" }, @@ -59,8 +58,8 @@ "newGroup": "مجموعة جديدة", "rename": "إعادة تسمية المجموعة", "renameSuccess": "تمت إعادة التسمية بنجاح", - "sortSuccess": "تمت إعادة ترتيب الفئات بنجاح", - "sorting": "جاري تحديث ترتيب الفئات...", + "sortSuccess": "تمت إعادة ترتيب بنجاح", + "sorting": "جاري تحديث ترتيب المجموعة...", "tooLong": "يجب أن يكون طول اسم المجموعة بين 1 و 20" }, "shareModal": { diff --git a/locales/ar/welcome.json b/locales/ar/welcome.json index 0c95daf324166..cab86496923a2 100644 --- a/locales/ar/welcome.json +++ b/locales/ar/welcome.json @@ -4,6 +4,40 @@ "market": "تسوق في السوق", "start": "ابدأ الآن" }, + "guide": { + "agents": { + "replaceBtn": "تغيير", + "title": "إضافة توصيات المساعدين:" + }, + "defaultMessage": "أنا LobeChat، مساعدك الذكي الشخصي. كيف يمكنني مساعدتك اليوم؟\nإذا كنت بحاجة إلى مساعد أكثر احترافية أو تخصيصًا، يمكنك النقر على `+` لإنشاء مساعد مخصص", + "qa": { + "q01": "ما هو LobeHub؟", + "q02": "ما هو LobeChat؟", + "q03": "هل يدعم LobeChat الدعم المجتمعي؟", + "q04": "ما هي الوظائف المدعومة بواسطة LobeChat؟", + "q05": "كيفية نشر واستخدام LobeChat؟", + "q06": "ما هي تكلفة LobeChat؟", + "q07": "هل LobeChat مجاني؟", + "q08": "هل هناك إصدار خدمة سحابية؟", + "q09": "هل يدعم نماذج اللغة المحلية؟", + "q10": "هل يدعم التعرف على الصور والتوليف؟", + "q11": "هل يدعم توليف الصوت والتعرف على الصوت؟", + "q12": "هل يدعم نظام الإضافات؟", + "q13": "هل يوجد سوق خاص للحصول على GPTs؟", + "q14": "هل يدعم مزودو خدمات الذكاء الاصطناعي المتعددة؟", + "q15": "ماذا يجب علي فعله إذا واجهت مشكلة أثناء الاستخدام؟" + }, + "questions": { + "moreBtn": "معرفة المزيد", + "title": "الأسئلة الشائعة:" + }, + "welcome": { + "afternoon": "مساء الخير", + "morning": "صباح الخير", + "night": "مساء الخير", + "noon": "نهاراً" + } + }, "header": "مرحبًا بكم في الاستخدام", "pickAgent": "أو اختيار قالب مساعد من القائمة التالية", "skip": "تخطى الإنشاء", diff --git a/locales/bg-BG/chat.json b/locales/bg-BG/chat.json index 5fbb7cc21d209..e6327c8b4da96 100644 --- a/locales/bg-BG/chat.json +++ b/locales/bg-BG/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Няма наличен асистент", "historyRange": "Диапазон на историята", "inbox": { - "defaultMessage": "Здравей, аз съм твоят виртуален агент. Можеш да ме питаш всичко и аз ще направя всичко възможно да ти отговоря. Ако имаш нужда от по-професионален или персонализиран агент, кликни върху `+` за да създадеш такъв.", "desc": "Активирай мозъчния клъстер и събуди креативното мислене. Твоят виртуален агент е тук, за да общува с теб за всичко.", "title": "Просто чати" }, @@ -59,8 +58,8 @@ "newGroup": "Нова група", "rename": "Преименувай група", "renameSuccess": "Преименувана успешно", - "sortSuccess": "Сортирането е успешно", - "sorting": "Актуализация на подредбата на групите...", + "sortSuccess": "Пренареждането е успешно", + "sorting": "Актуализиране на подредбата на групата...", "tooLong": "Дължината на името на групата трябва да бъде между 1-20 символа" }, "shareModal": { diff --git a/locales/bg-BG/welcome.json b/locales/bg-BG/welcome.json index 1bba4f057ead5..32186226f6b79 100644 --- a/locales/bg-BG/welcome.json +++ b/locales/bg-BG/welcome.json @@ -4,6 +4,40 @@ "market": "Пазар", "start": "Започни сега" }, + "guide": { + "agents": { + "replaceBtn": "Смени", + "title": "Препоръчване на нови асистенти:" + }, + "defaultMessage": "Аз съм LobeChat, твоят личен интелигентен асистент. Как мога да ти помогна днес?\nАко искаш по-професионален или персонализиран асистент, кликни на `+` за създаване на персонализиран асистент.", + "qa": { + "q01": "Какво е LobeHub?", + "q02": "Какво е LobeChat?", + "q03": "Има ли LobeChat общностна подкрепа?", + "q04": "Какви функции поддържа LobeChat?", + "q05": "Как да разгърнем и използваме LobeChat?", + "q06": "Какво е ценообразуванието на LobeChat?", + "q07": "Дали LobeChat е безплатен?", + "q08": "Има ли облачна версия?", + "q09": "Поддържа ли локални езикови модели?", + "q10": "Поддържа ли разпознаване и генериране на изображения?", + "q11": "Поддържа ли синтез на глас и разпознаване на глас?", + "q12": "Поддържа ли система за добавяне на модули?", + "q13": "Има ли собствен пазар за получаване на GPTs?", + "q14": "Поддържа ли няколко доставчика на AI услуги?", + "q15": "Какво да правя, ако имам проблем при използването?" + }, + "questions": { + "moreBtn": "Научи повече", + "title": "Често задавани въпроси:" + }, + "welcome": { + "afternoon": "Добър ден", + "morning": "Добро утро", + "night": "Добър вечер", + "noon": "Добър ден" + } + }, "header": "Добре дошли", "pickAgent": "Или изберете от следните шаблони на агенти", "skip": "Пропусни създаването", diff --git a/locales/de-DE/chat.json b/locales/de-DE/chat.json index dfc38bc88eaf1..c2ee10dc53917 100644 --- a/locales/de-DE/chat.json +++ b/locales/de-DE/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Kein Assistent verfügbar", "historyRange": "Verlaufsbereich", "inbox": { - "defaultMessage": "Hallo, ich bin dein intelligenter Assistent. Du kannst mir jede Frage stellen, und ich werde mein Bestes tun, um sie zu beantworten. Wenn du einen professionelleren oder maßgeschneiderten Assistenten benötigst, klicke auf das `+`, um einen benutzerdefinierten Assistenten zu erstellen.", "desc": "Aktiviere das Gehirncluster und entfache den Funken des Denkens. Dein intelligenter Assistent, der mit dir über alles kommuniziert.", "title": "Lass uns plaudern" }, diff --git a/locales/de-DE/welcome.json b/locales/de-DE/welcome.json index 490bfe76880b1..b8a3969b14ed9 100644 --- a/locales/de-DE/welcome.json +++ b/locales/de-DE/welcome.json @@ -4,6 +4,40 @@ "market": "Markt durchstöbern", "start": "Jetzt starten" }, + "guide": { + "agents": { + "replaceBtn": "Ersetzen", + "title": "Neue Assistentenempfehlung:" + }, + "defaultMessage": "Ich bin LobeChat, dein persönlicher intelligenter Assistent. Wie kann ich dir heute helfen?\nWenn du einen professionelleren oder maßgeschneiderten Assistenten benötigst, klicke auf `+`, um einen benutzerdefinierten Assistenten zu erstellen.", + "qa": { + "q01": "Was ist LobeHub?", + "q02": "Was ist LobeChat?", + "q03": "Hat LobeChat Community-Support?", + "q04": "Welche Funktionen unterstützt LobeChat?", + "q05": "Wie wird LobeChat bereitgestellt und verwendet?", + "q06": "Wie sind die Preise für LobeChat?", + "q07": "Ist LobeChat kostenlos?", + "q08": "Gibt es eine Cloud-Service-Version?", + "q09": "Unterstützt LobeChat lokale Sprachmodelle?", + "q10": "Unterstützt LobeChat Bilderkennung und -erstellung?", + "q11": "Unterstützt LobeChat Sprachsynthese und Spracherkennung?", + "q12": "Unterstützt LobeChat ein Plugin-System?", + "q13": "Gibt es einen eigenen Markt, um GPTs zu erhalten?", + "q14": "Unterstützt LobeChat verschiedene KI-Service-Anbieter?", + "q15": "Was soll ich tun, wenn ich beim Gebrauch auf Probleme stoße?" + }, + "questions": { + "moreBtn": "Mehr erfahren", + "title": "Häufig gestellte Fragen:" + }, + "welcome": { + "afternoon": "Guten Nachmittag", + "morning": "Guten Morgen", + "night": "Guten Abend", + "noon": "Guten Mittag" + } + }, "header": "Willkommen", "pickAgent": "Oder wählen Sie eine Vorlage aus den folgenden Assistenten", "skip": "Erstellung überspringen", diff --git a/locales/en-US/chat.json b/locales/en-US/chat.json index 4844044d2d235..1a653f5be6a7d 100644 --- a/locales/en-US/chat.json +++ b/locales/en-US/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "No assistant available", "historyRange": "History Range", "inbox": { - "defaultMessage": "Hello, I'm your virtual agent. You can ask me anything, and I'll do my best to answer you. If you need a more professional or customized agent, click on `+` to create a custom agent.", "desc": "Activate the brain cluster and spark creative thinking. Your virtual agent is here to communicate with you about everything.", "title": "Just Chat" }, diff --git a/locales/en-US/welcome.json b/locales/en-US/welcome.json index 18013d27fb4ac..5b74e45d21261 100644 --- a/locales/en-US/welcome.json +++ b/locales/en-US/welcome.json @@ -4,6 +4,40 @@ "market": "Visit Market", "start": "Start Now" }, + "guide": { + "agents": { + "replaceBtn": "Replace Batch", + "title": "New Assistant Recommendations:" + }, + "defaultMessage": "I'm LobeChat, your personal intelligent assistant. How can I assist you today?\nIf you need a more professional or customized assistant, click on `+` to create a custom assistant.", + "qa": { + "q01": "What is LobeHub?", + "q02": "What is LobeChat?", + "q03": "Does LobeChat have community support?", + "q04": "What functions does LobeChat support?", + "q05": "How to deploy and use LobeChat?", + "q06": "What is the pricing of LobeChat?", + "q07": "Is LobeChat free?", + "q08": "Is there a cloud service version?", + "q09": "Does LobeChat support local language models?", + "q10": "Does LobeChat support image recognition and generation?", + "q11": "Does LobeChat support speech synthesis and speech recognition?", + "q12": "Does LobeChat support a plugin system?", + "q13": "Is there a marketplace to obtain GPTs?", + "q14": "Does LobeChat support multiple AI service providers?", + "q15": "What should I do if I encounter problems while using it?" + }, + "questions": { + "moreBtn": "Learn More", + "title": "Frequently Asked Questions:" + }, + "welcome": { + "afternoon": "Good Afternoon", + "morning": "Good Morning", + "night": "Good Evening", + "noon": "Good Noon" + } + }, "header": "Welcome", "pickAgent": "Or choose from the following agent templates", "skip": "Skip Creation", diff --git a/locales/es-ES/chat.json b/locales/es-ES/chat.json index eec3b845b0644..39c5677df522f 100644 --- a/locales/es-ES/chat.json +++ b/locales/es-ES/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "No hay asistente disponible", "historyRange": "Rango de historial", "inbox": { - "defaultMessage": "Hola, soy tu asistente virtual, puedes preguntarme cualquier cosa y haré todo lo posible para responderte. Si necesitas un asistente más profesional o personalizado, haz clic en `+` para crear un asistente personalizado.", "desc": "Despierta la mente con el poder del cerebro colectivo. Tu asistente inteligente está aquí para conversar contigo sobre cualquier cosa.", "title": "Charla casual" }, diff --git a/locales/es-ES/welcome.json b/locales/es-ES/welcome.json index 756a618671e97..0b115c47ed3bd 100644 --- a/locales/es-ES/welcome.json +++ b/locales/es-ES/welcome.json @@ -4,6 +4,40 @@ "market": "Explorar el mercado", "start": "Comenzar ahora" }, + "guide": { + "agents": { + "replaceBtn": "Cambiar grupo", + "title": "Recomendación de asistentes nuevos:" + }, + "defaultMessage": "Soy LobeChat, tu asistente inteligente personal. ¿En qué puedo ayudarte hoy?\nSi necesitas un asistente más profesional o personalizado, haz clic en `+` para crear un asistente personalizado.", + "qa": { + "q01": "¿Qué es LobeHub?", + "q02": "¿Qué es LobeChat?", + "q03": "¿LobeChat tiene soporte comunitario?", + "q04": "¿Qué funciones admite LobeChat?", + "q05": "¿Cómo se despliega y utiliza LobeChat?", + "q06": "¿Cuál es la estructura de precios de LobeChat?", + "q07": "¿LobeChat es gratuito?", + "q08": "¿Hay una versión de servicio en la nube?", + "q09": "¿Admite modelos de lenguaje locales?", + "q10": "¿Admite reconocimiento y generación de imágenes?", + "q11": "¿Admite síntesis de voz y reconocimiento de voz?", + "q12": "¿Admite un sistema de complementos?", + "q13": "¿Tiene su propio mercado para obtener GPTs?", + "q14": "¿Admite varios proveedores de servicios de IA?", + "q15": "¿Qué debo hacer si encuentro problemas al usarlo?" + }, + "questions": { + "moreBtn": "Saber más", + "title": "Preguntas frecuentes:" + }, + "welcome": { + "afternoon": "Buenas tardes", + "morning": "Buenos días", + "night": "Buenas noches", + "noon": "Buen mediodía" + } + }, "header": "Bienvenido/a", "pickAgent": "O elige una plantilla de asistente a continuación", "skip": "Saltar", diff --git a/locales/fr-FR/chat.json b/locales/fr-FR/chat.json index 749477570f695..fb6fdeeee8ff0 100644 --- a/locales/fr-FR/chat.json +++ b/locales/fr-FR/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Aucun assistant disponible", "historyRange": "Plage d'historique", "inbox": { - "defaultMessage": "Bonjour, je suis votre agent virtuel. Vous pouvez me poser n'importe quelle question et je ferai de mon mieux pour vous répondre. Si vous avez besoin d'un agent plus professionnel ou personnalisé, cliquez sur le `+` pour créer un agent personnalisé.", "desc": "Débloquez le potentiel de votre esprit. Votre agent intelligent est là pour discuter avec vous de tout et de rien.", "title": "Discutons un peu" }, diff --git a/locales/fr-FR/welcome.json b/locales/fr-FR/welcome.json index 035ee7d2367d1..485f74653b247 100644 --- a/locales/fr-FR/welcome.json +++ b/locales/fr-FR/welcome.json @@ -4,6 +4,40 @@ "market": "Parcourir le marché", "start": "Démarrer maintenant" }, + "guide": { + "agents": { + "replaceBtn": "Remplacer", + "title": "Nouvelles recommandations d'assistants :" + }, + "defaultMessage": "Je suis LobeChat, votre assistant intelligent personnel. Comment puis-je vous aider aujourd'hui ?\nSi vous avez besoin d'une assistance plus professionnelle ou personnalisée, cliquez sur `+` pour créer un assistant personnalisé.", + "qa": { + "q01": "Qu'est-ce que LobeHub ?", + "q02": "Qu'est-ce que LobeChat ?", + "q03": "LobeChat a-t-il un support communautaire ?", + "q04": "Quelles sont les fonctionnalités prises en charge par LobeChat ?", + "q05": "Comment déployer et utiliser LobeChat ?", + "q06": "Quelle est la tarification de LobeChat ?", + "q07": "LobeChat est-il gratuit ?", + "q08": "Y a-t-il une version cloud de service ?", + "q09": "Prend-il en charge les modèles de langage locaux ?", + "q10": "Prend-il en charge la reconnaissance et la génération d'images ?", + "q11": "Prend-il en charge la synthèse vocale et la reconnaissance vocale ?", + "q12": "Prend-il en charge un système de plugins ?", + "q13": "A-t-il son propre marché pour obtenir des GPTs ?", + "q14": "Prend-il en charge plusieurs fournisseurs de services d'IA ?", + "q15": "Que faire si je rencontre des problèmes lors de l'utilisation ?" + }, + "questions": { + "moreBtn": "En savoir plus", + "title": "Questions fréquentes :" + }, + "welcome": { + "afternoon": "Bon après-midi", + "morning": "Bonjour", + "night": "Bonsoir", + "noon": "Bonjour" + } + }, "header": "Bienvenue", "pickAgent": "Ou choisissez parmi les modèles d'agent suivants", "skip": "Passer", diff --git a/locales/it-IT/chat.json b/locales/it-IT/chat.json index 9b6101b911d09..84c4a0a06f6fd 100644 --- a/locales/it-IT/chat.json +++ b/locales/it-IT/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Nessun assistente disponibile", "historyRange": "Intervallo cronologico", "inbox": { - "defaultMessage": "Ciao, sono il tuo assistente virtuale, puoi chiedermi qualsiasi cosa e farò del mio meglio per risponderti. Se hai bisogno di un assistente più professionale o personalizzato, clicca su `+` per creare un assistente personalizzato.", "desc": "Attiva il cluster cerebrale, accendi la scintilla del pensiero. Il tuo assistente intelligente, qui per comunicare con te su tutto.", "title": "Chiacchierata casuale" }, diff --git a/locales/it-IT/welcome.json b/locales/it-IT/welcome.json index 7864b9ac32b35..5f1ed3b3abf2c 100644 --- a/locales/it-IT/welcome.json +++ b/locales/it-IT/welcome.json @@ -4,6 +4,40 @@ "market": "Esplora il mercato", "start": "Inizia subito" }, + "guide": { + "agents": { + "replaceBtn": "Cambia gruppo", + "title": "Nuova raccomandazione assistente:" + }, + "defaultMessage": "Sono LobeChat, il tuo assistente intelligente personale. Come posso aiutarti oggi?\nSe hai bisogno di un assistente più professionale o personalizzato, clicca su `+` per creare un assistente personalizzato.", + "qa": { + "q01": "Cos'è LobeHub?", + "q02": "Cos'è LobeChat?", + "q03": "LobeChat ha supporto comunitario?", + "q04": "Quali funzionalità supporta LobeChat?", + "q05": "Come fare il deploy e utilizzare LobeChat?", + "q06": "Quali sono i prezzi di LobeChat?", + "q07": "LobeChat è gratuito?", + "q08": "C'è una versione cloud?", + "q09": "Supporta modelli linguistici locali?", + "q10": "Supporta riconoscimento e generazione di immagini?", + "q11": "Supporta sintesi vocale e riconoscimento vocale?", + "q12": "Supporta un sistema di plugin?", + "q13": "Ha un proprio mercato per ottenere GPTs?", + "q14": "Supporta vari fornitori di servizi AI?", + "q15": "Cosa fare se riscontro problemi durante l'uso?" + }, + "questions": { + "moreBtn": "Scopri di più", + "title": "Domande frequenti:" + }, + "welcome": { + "afternoon": "Buon pomeriggio", + "morning": "Buongiorno", + "night": "Buonasera", + "noon": "Buon pranzo" + } + }, "header": "Benvenuti", "pickAgent": "Oppure scegli tra i seguenti modelli di assistente", "skip": "Salta creazione", diff --git a/locales/ja-JP/chat.json b/locales/ja-JP/chat.json index 4814c5653dcc1..e3c26d7b0a19f 100644 --- a/locales/ja-JP/chat.json +++ b/locales/ja-JP/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "エージェントがいません", "historyRange": "履歴範囲", "inbox": { - "defaultMessage": "こんにちは、私はあなたのスマートアシスタントです。何か質問があれば遠慮なく聞いてください。より専門的でカスタマイズされたアシスタントが必要な場合は、`+` をクリックしてカスタムエージェントを作成できます。", "desc": "脳のクラスターを起動し、創造性を引き出しましょう。あなたのスマートアシスタントは、あなたとすべてのことについてここでコミュニケーションします。", "title": "気軽におしゃべり" }, diff --git a/locales/ja-JP/welcome.json b/locales/ja-JP/welcome.json index fea9e9f55d441..8b0fd43fdcdb9 100644 --- a/locales/ja-JP/welcome.json +++ b/locales/ja-JP/welcome.json @@ -1,9 +1,43 @@ { "button": { "import": "設定をインポート", - "market": "マーケットを見る", + "market": "市場を見る", "start": "すぐに開始" }, + "guide": { + "agents": { + "replaceBtn": "別のグループ", + "title": "新しいアシスタントのおすすめ:" + }, + "defaultMessage": "私はLobeChat、あなたの個人的なスマートアシスタントです。今日は何を手伝えますか?\nより専門的またはカスタマイズされたアシスタントが必要な場合は、`+` をクリックしてカスタムアシスタントを作成してください。", + "qa": { + "q01": "LobeHub とは?", + "q02": "LobeChat とは?", + "q03": "LobeChat にはコミュニティサポートがありますか?", + "q04": "LobeChat はどんな機能をサポートしていますか?", + "q05": "LobeChat の展開と使用方法は?", + "q06": "LobeChat の価格設定はどのようになっていますか?", + "q07": "LobeChat は無料ですか?", + "q08": "クラウドサービス版はありますか?", + "q09": "ローカル言語モデルをサポートしていますか?", + "q10": "画像認識と生成をサポートしていますか?", + "q11": "音声合成と音声認識をサポートしていますか?", + "q12": "プラグインシステムをサポートしていますか?", + "q13": "独自の市場でGPTsを取得できますか?", + "q14": "複数のAIサービスプロバイダーをサポートしていますか?", + "q15": "問題が発生した場合はどうすればよいですか?" + }, + "questions": { + "moreBtn": "さらに詳しく", + "title": "よくある質問:" + }, + "welcome": { + "afternoon": "こんにちは", + "morning": "おはようございます", + "night": "こんばんは", + "noon": "こんにちは" + } + }, "header": "ようこそ", "pickAgent": "または以下のエージェントテンプレートから選択してください", "skip": "作成をスキップ", diff --git a/locales/ko-KR/chat.json b/locales/ko-KR/chat.json index f7a3a40bb13a2..d66da5160fc45 100644 --- a/locales/ko-KR/chat.json +++ b/locales/ko-KR/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "도우미가 없습니다", "historyRange": "대화 기록 범위", "inbox": { - "defaultMessage": "안녕하세요, 저는 당신의 인공지능 도우미입니다. 어떤 질문이든 물어보세요. 최선을 다해 답변해 드리겠습니다. 더 전문적이거나 맞춤형 도우미가 필요하다면 `+`를 클릭하여 사용자 정의 도우미를 만들 수 있습니다.", "desc": "뇌 클러스터를 활성화하여 창의적인 아이디어를 끌어내는 인공지능 비서입니다. 여기서 모든 것에 대해 대화합니다.", "title": "무작위 대화" }, diff --git a/locales/ko-KR/welcome.json b/locales/ko-KR/welcome.json index 390ca6734cead..7dbb463ffd5cc 100644 --- a/locales/ko-KR/welcome.json +++ b/locales/ko-KR/welcome.json @@ -4,6 +4,40 @@ "market": "시장 구경하기", "start": "지금 시작" }, + "guide": { + "agents": { + "replaceBtn": "다른 것으로 바꾸기", + "title": "새로운 보조 추천: " + }, + "defaultMessage": "나는 LobeChat, 당신의 개인 지능형 보조입니다. 오늘은 무엇을 도와드릴까요?\n더 전문적이거나 맞춤형 보조가 필요하다면 `+`를 클릭하여 사용자 정의 보조를 만들 수 있습니다.", + "qa": { + "q01": "LobeHub은 무엇인가요?", + "q02": "LobeChat은 무엇인가요?", + "q03": "LobeChat에 커뮤니티 지원이 있나요?", + "q04": "LobeChat은 어떤 기능을 지원하나요?", + "q05": "LobeChat을 배포하고 사용하는 방법은 무엇인가요?", + "q06": "LobeChat의 가격 책정은 어떻게 이루어지나요?", + "q07": "LobeChat은 무료인가요?", + "q08": "클라우드 서비스 버전이 있나요?", + "q09": "로컬 언어 모델을 지원하나요?", + "q10": "이미지 인식 및 생성을 지원하나요?", + "q11": "음성 합성 및 음성 인식을 지원하나요?", + "q12": "플러그인 시스템을 지원하나요?", + "q13": "자체 시장을 통해 GPTs를 얻을 수 있나요?", + "q14": "다양한 AI 서비스 제공업체를 지원하나요?", + "q15": "문제가 발생했을 때 어떻게 해야 하나요?" + }, + "questions": { + "moreBtn": "더 알아보기", + "title": "자주 묻는 질문: " + }, + "welcome": { + "afternoon": "안녕하세요", + "morning": "좋은 아침", + "night": "안녕히 주무세요", + "noon": "안녕하세요" + } + }, "header": "환영합니다", "pickAgent": "또는 다음 도우미 템플릿 중 하나를 선택하세요", "skip": "생성 건너뛰기", diff --git a/locales/nl-NL/chat.json b/locales/nl-NL/chat.json index 32084a6e21596..77e9c4f08bae7 100644 --- a/locales/nl-NL/chat.json +++ b/locales/nl-NL/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Geen assistent beschikbaar", "historyRange": "Geschiedenisbereik", "inbox": { - "defaultMessage": "Hallo, ik ben je slimme assistent. Je kunt me alles vragen en ik zal mijn best doen om je te antwoorden. Als je een meer professionele of op maat gemaakte assistent nodig hebt, klik dan op het `+`-teken om een aangepaste assistent te maken.", "desc": "Activeer de hersencluster en laat de vonken van gedachten overslaan. Je slimme assistent, hier om met je over alles te praten.", "title": "Praat maar raak" }, @@ -50,17 +49,17 @@ "sessionGroup": { "config": "Groepsbeheer", "confirmRemoveGroupAlert": "Je staat op het punt deze groep te verwijderen. Na verwijdering zullen de assistenten van deze groep worden verplaatst naar de standaardlijst. Bevestig je actie.", - "createAgentSuccess": "Agent succesvol aangemaakt", + "createAgentSuccess": "Assistent succesvol aangemaakt", "createGroup": "Nieuwe groep toevoegen", "createSuccess": "Succesvol aangemaakt", - "creatingAgent": "Agent wordt aangemaakt...", + "creatingAgent": "Assistent wordt aangemaakt...", "inputPlaceholder": "Voer de naam van de groep in...", "moveGroup": "Verplaatsen naar groep", "newGroup": "Nieuwe groep", "rename": "Groepsnaam wijzigen", "renameSuccess": "Naam succesvol gewijzigd", "sortSuccess": "Sorteren succesvol voltooid", - "sorting": "Groepsortering wordt bijgewerkt...", + "sorting": "Groepsordening wordt bijgewerkt...", "tooLong": "De groepsnaam moet tussen 1 en 20 tekens lang zijn" }, "shareModal": { diff --git a/locales/nl-NL/welcome.json b/locales/nl-NL/welcome.json index 14b3e56ee4049..cfaa4f986a1cc 100644 --- a/locales/nl-NL/welcome.json +++ b/locales/nl-NL/welcome.json @@ -4,6 +4,40 @@ "market": "Verken de markt", "start": "Nu beginnen" }, + "guide": { + "agents": { + "replaceBtn": "Vervang een groep", + "title": "Nieuwe aanbeveling assistent: " + }, + "defaultMessage": "Ik ben LobeChat, jouw persoonlijke slimme assistent. Waarmee kan ik je vandaag helpen?\nAls je een meer professionele of aangepaste assistent nodig hebt, klik dan op `+` om een aangepaste assistent te maken.", + "qa": { + "q01": "Wat is LobeHub?", + "q02": "Wat is LobeChat?", + "q03": "Heeft LobeChat community-ondersteuning?", + "q04": "Welke functies ondersteunt LobeChat?", + "q05": "Hoe kan ik LobeChat implementeren en gebruiken?", + "q06": "Hoe is de prijsstelling van LobeChat?", + "q07": "Is LobeChat gratis?", + "q08": "Is er een cloudserviceversie beschikbaar?", + "q09": "Ondersteunt LobeChat lokale taalmodellen?", + "q10": "Ondersteunt LobeChat beeldherkenning en -generatie?", + "q11": "Ondersteunt LobeChat spraaksynthese en spraakherkenning?", + "q12": "Ondersteunt LobeChat plug-insysteem?", + "q13": "Heeft LobeChat een eigen marktplaats om GPT's te verkrijgen?", + "q14": "Ondersteunt LobeChat meerdere AI-serviceproviders?", + "q15": "Wat moet ik doen als ik problemen ondervind tijdens het gebruik?" + }, + "questions": { + "moreBtn": "Meer informatie", + "title": "Veelgestelde vragen: " + }, + "welcome": { + "afternoon": "Goedemiddag", + "morning": "Goedemorgen", + "night": "Goedenavond", + "noon": "Goedemiddag" + } + }, "header": "Welkom", "pickAgent": "Of kies een assistent-sjabloon uit de onderstaande opties", "skip": "Overslaan bij het maken", diff --git a/locales/pl-PL/chat.json b/locales/pl-PL/chat.json index 4998253e521a7..d62490ccc01b4 100644 --- a/locales/pl-PL/chat.json +++ b/locales/pl-PL/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Brak asystenta", "historyRange": "Zakres historii", "inbox": { - "defaultMessage": "Cześć, jestem twoim inteligentnym asystentem, możesz zadać mi dowolne pytanie, postaram się na nie odpowiedzieć. Jeśli potrzebujesz bardziej profesjonalnego lub spersonalizowanego asystenta, kliknij `+`, aby utworzyć niestandardowego asystenta.", "desc": "Włącz klastry mózgów, rozpal iskrę myślenia. Twój inteligentny asystent, gotowy do rozmowy o wszystkim.", "title": "Pogadajmy sobie" }, @@ -50,7 +49,7 @@ "sessionGroup": { "config": "Zarządzanie grupami", "confirmRemoveGroupAlert": "Czy na pewno chcesz usunąć tę grupę? Po usunięciu asystenci z tej grupy zostaną przeniesieni do domyślnej listy. Potwierdź swoje działanie.", - "createAgentSuccess": "Utworzono asystenta pomyślnie", + "createAgentSuccess": "Utworzenie asystenta zakończone sukcesem", "createGroup": "Dodaj nową grupę", "createSuccess": "Utworzono pomyślnie", "creatingAgent": "Tworzenie asystenta...", @@ -59,7 +58,7 @@ "newGroup": "Nowa grupa", "rename": "Zmień nazwę grupy", "renameSuccess": "Zmiana nazwy pomyślna", - "sortSuccess": "Pomyślnie posortowano ponownie", + "sortSuccess": "Pomyślne ponowne sortowanie", "sorting": "Aktualizacja sortowania grupy...", "tooLong": "Nazwa grupy musi mieć od 1 do 20 znaków" }, diff --git a/locales/pl-PL/welcome.json b/locales/pl-PL/welcome.json index 1da7c565bf08f..19422d2f758de 100644 --- a/locales/pl-PL/welcome.json +++ b/locales/pl-PL/welcome.json @@ -4,6 +4,40 @@ "market": "Przeglądaj rynek", "start": "Rozpocznij teraz" }, + "guide": { + "agents": { + "replaceBtn": "Zmień", + "title": "Nowe zalecenia asystenta:" + }, + "defaultMessage": "Jestem LobeChat, Twoim osobistym inteligentnym asystentem. Jak mogę Ci dzisiaj pomóc?\nJeśli potrzebujesz bardziej profesjonalnej lub spersonalizowanej pomocy, kliknij `+` aby stworzyć niestandardowego asystenta.", + "qa": { + "q01": "Czym jest LobeHub?", + "q02": "Czym jest LobeChat?", + "q03": "Czy LobeChat ma wsparcie społecznościowe?", + "q04": "Jakie funkcje obsługuje LobeChat?", + "q05": "Jak zainstalować i używać LobeChat?", + "q06": "Jakie są ceny LobeChat?", + "q07": "Czy LobeChat jest darmowy?", + "q08": "Czy istnieje wersja usługi w chmurze?", + "q09": "Czy obsługuje lokalne modele językowe?", + "q10": "Czy obsługuje rozpoznawanie i generowanie obrazów?", + "q11": "Czy obsługuje syntezę mowy i rozpoznawanie mowy?", + "q12": "Czy obsługuje system wtyczek?", + "q13": "Czy ma własny rynek do pobierania GPTs?", + "q14": "Czy obsługuje wiele dostawców usług AI?", + "q15": "Co zrobić, gdy napotkasz problem podczas korzystania?" + }, + "questions": { + "moreBtn": "Dowiedz się więcej", + "title": "Najczęściej zadawane pytania:" + }, + "welcome": { + "afternoon": "Dzień dobry", + "morning": "Dzień dobry", + "night": "Dobry wieczór", + "noon": "Dzień dobry" + } + }, "header": "Witaj", "pickAgent": "Wybierz szablon asystenta lub kontynuuj", "skip": "Pomiń tworzenie", diff --git a/locales/pt-BR/chat.json b/locales/pt-BR/chat.json index 13f91bb3c5898..1e53f367f0ecd 100644 --- a/locales/pt-BR/chat.json +++ b/locales/pt-BR/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Sem assistente disponível", "historyRange": "Intervalo de Histórico", "inbox": { - "defaultMessage": "Olá, eu sou seu assistente virtual, você pode me perguntar qualquer coisa e eu farei o meu melhor para responder. Se precisar de um assistente mais profissional ou personalizado, clique em `+` para criar um assistente personalizado.", "desc": "Ative o cluster cerebral, inspire faíscas de pensamento. Seu assistente inteligente, aqui para conversar sobre tudo.", "title": "Conversa Aleatória" }, diff --git a/locales/pt-BR/welcome.json b/locales/pt-BR/welcome.json index dd00ac1239d44..0da0a857ba68a 100644 --- a/locales/pt-BR/welcome.json +++ b/locales/pt-BR/welcome.json @@ -4,6 +4,40 @@ "market": "Explorar o mercado", "start": "Começar agora" }, + "guide": { + "agents": { + "replaceBtn": "Trocar", + "title": "Recomendação de assistentes adicionais:" + }, + "defaultMessage": "Eu sou o LobeChat, seu assistente de inteligência artificial pessoal. Como posso ajudar hoje?\nSe precisar de assistência mais profissional ou personalizada, clique em `+` para criar um assistente personalizado.", + "qa": { + "q01": "O que é o LobeHub?", + "q02": "O que é o LobeChat?", + "q03": "O LobeChat tem suporte comunitário?", + "q04": "Quais funcionalidades o LobeChat suporta?", + "q05": "Como implantar e usar o LobeChat?", + "q06": "Qual é a estrutura de preços do LobeChat?", + "q07": "O LobeChat é gratuito?", + "q08": "Existe uma versão de serviço em nuvem?", + "q09": "O LobeChat suporta modelos de idiomas locais?", + "q10": "O LobeChat suporta reconhecimento e geração de imagens?", + "q11": "O LobeChat suporta síntese de voz e reconhecimento de voz?", + "q12": "O LobeChat suporta um sistema de plug-ins?", + "q13": "O LobeChat tem seu próprio mercado para obter GPTs?", + "q14": "O LobeChat suporta vários provedores de serviços de IA?", + "q15": "O que devo fazer se encontrar problemas durante o uso?" + }, + "questions": { + "moreBtn": "Saiba mais", + "title": "Perguntas frequentes:" + }, + "welcome": { + "afternoon": "Boa tarde", + "morning": "Bom dia", + "night": "Boa noite", + "noon": "Boa tarde" + } + }, "header": "Bem-vindo", "pickAgent": "Ou escolha entre os modelos de assistente abaixo", "skip": "Pular", diff --git a/locales/ru-RU/chat.json b/locales/ru-RU/chat.json index 972cbee0bc51c..1de1b7b05ea85 100644 --- a/locales/ru-RU/chat.json +++ b/locales/ru-RU/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Нет ассистента", "historyRange": "История сообщений", "inbox": { - "defaultMessage": "Привет, я твой виртуальный помощник. Ты можешь задать мне любой вопрос, и я постараюсь на него ответить. Если тебе нужен более профессиональный или настраиваемый помощник, нажми на `+`, чтобы создать пользовательского помощника.", "desc": "Зажги искру мысли, открой кластер мозгов. Твой виртуальный ассистент, готовый обсудить все с тобой.", "title": "Просто поболтаем" }, diff --git a/locales/ru-RU/welcome.json b/locales/ru-RU/welcome.json index 7468b263d1edf..3c6a5b3803742 100644 --- a/locales/ru-RU/welcome.json +++ b/locales/ru-RU/welcome.json @@ -4,6 +4,40 @@ "market": "Посетить рынок", "start": "Начать" }, + "guide": { + "agents": { + "replaceBtn": "Заменить", + "title": "Рекомендации новых агентов:" + }, + "defaultMessage": "Я LobeChat, ваш персональный интеллектуальный помощник. Чем я могу помочь вам сегодня?\nЕсли вам нужна более профессиональная или настраиваемая помощь, нажмите на `+` для создания пользовательского помощника.", + "qa": { + "q01": "Что такое LobeHub?", + "q02": "Что такое LobeChat?", + "q03": "Поддерживает ли LobeChat сообщества?", + "q04": "Какие функции поддерживает LobeChat?", + "q05": "Как развернуть и использовать LobeChat?", + "q06": "Какова ценовая политика LobeChat?", + "q07": "Является ли LobeChat бесплатным?", + "q08": "Есть ли облачная версия?", + "q09": "Поддерживает ли локальные языковые модели?", + "q10": "Поддерживает ли распознавание и генерацию изображений?", + "q11": "Поддерживает ли синтез речи и распознавание речи?", + "q12": "Поддерживает ли систему плагинов?", + "q13": "Есть ли собственный рынок для получения GPTs?", + "q14": "Поддерживает ли несколько поставщиков услуг искусственного интеллекта?", + "q15": "Что делать, если у меня возникли проблемы при использовании?" + }, + "questions": { + "moreBtn": "Узнать больше", + "title": "Часто задаваемые вопросы:" + }, + "welcome": { + "afternoon": "Добрый день", + "morning": "Доброе утро", + "night": "Добрый вечер", + "noon": "Добрый день" + } + }, "header": "Привет", "pickAgent": "Или выберите один из следующих шаблонов помощника", "skip": "Пропустить", diff --git a/locales/tr-TR/chat.json b/locales/tr-TR/chat.json index cafbcd50e6013..d220cf4ce99e1 100644 --- a/locales/tr-TR/chat.json +++ b/locales/tr-TR/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Asistan yok", "historyRange": "Geçmiş Aralığı", "inbox": { - "defaultMessage": "Merhaba, ben sanal asistanınızım. Bana herhangi bir şey sorabilirsiniz ve size cevap vermek için elimden geleni yapacağım. Daha profesyonel veya özelleştirilmiş bir asistana ihtiyacınız varsa, özel bir asistan oluşturmak için `+` simgesine tıklayabilirsiniz.", "desc": "Beyin fırtınasını başlatın ve yaratıcı düşünmeye başlayın. Sanal asistanınız burada, her konuda sizinle iletişim kurmak için hazır.", "title": "Sohbet Et" }, @@ -50,7 +49,7 @@ "sessionGroup": { "config": "Grup Yönetimi", "confirmRemoveGroupAlert": "Bu grup silinecek, silindikten sonra bu grubun yardımcıları varsayılan listeye taşınacak, işleminizi onaylıyor musunuz?", - "createAgentSuccess": "Yardımcı başarıyla oluşturuldu", + "createAgentSuccess": "Yardımcı oluşturuldu", "createGroup": "Yeni Grup Ekle", "createSuccess": "Oluşturma Başarılı", "creatingAgent": "Yardımcı oluşturuluyor...", diff --git a/locales/tr-TR/welcome.json b/locales/tr-TR/welcome.json index a6a2a31446c17..f472271937e49 100644 --- a/locales/tr-TR/welcome.json +++ b/locales/tr-TR/welcome.json @@ -4,6 +4,40 @@ "market": "Pazara Göz At", "start": "Başla" }, + "guide": { + "agents": { + "replaceBtn": "Başka bir grup", + "title": "Yeni Asistan Önerileri:" + }, + "defaultMessage": "Ben LobeChat, senin kişisel akıllı asistanınım. Bugün sana nasıl yardımcı olabilirim?\nDaha profesyonel veya özelleştirilmiş bir asistana ihtiyacın varsa, özel bir asistan oluşturmak için `+` tıklayabilirsin.", + "qa": { + "q01": "LobeHub nedir?", + "q02": "LobeChat nedir?", + "q03": "LobeChat topluluk desteği var mı?", + "q04": "LobeChat hangi özellikleri destekliyor?", + "q05": "LobeChat nasıl dağıtılır ve kullanılır?", + "q06": "LobeChat'in fiyatlandırması nasıl?", + "q07": "LobeChat ücretsiz mi?", + "q08": "Bulut tabanlı hizmet sürümü var mı?", + "q09": "Yerel dil modellerini destekliyor mu?", + "q10": "Görüntü tanıma ve oluşturma desteği var mı?", + "q11": "Konuşma sentezi ve konuşma tanıma desteği var mı?", + "q12": "Eklenti sistemini destekliyor mu?", + "q13": "Kendi GPT'lerini almak için bir pazarı var mı?", + "q14": "Çeşitli yapay zeka hizmet sağlayıcılarını destekliyor mu?", + "q15": "Sorun yaşarsam ne yapmalıyım?" + }, + "questions": { + "moreBtn": "Daha Fazla Bilgi", + "title": "Herkesin Sorduğu Sorular:" + }, + "welcome": { + "afternoon": "İyi akşamlar", + "morning": "Günaydın", + "night": "İyi geceler", + "noon": "Tünaydın" + } + }, "header": "Hoş geldiniz", "pickAgent": "Veya aşağıdaki asistan şablonlarından birini seçin", "skip": "Atla", diff --git a/locales/vi-VN/chat.json b/locales/vi-VN/chat.json index 7eac38feb0029..34e7a94076fe2 100644 --- a/locales/vi-VN/chat.json +++ b/locales/vi-VN/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "Không có trợ lý", "historyRange": "Phạm vi lịch sử", "inbox": { - "defaultMessage": "Xin chào, tôi là trợ lý thông minh của bạn, bạn có thể hỏi tôi bất kỳ câu hỏi nào và tôi sẽ cố gắng trả lời. Nếu bạn cần một trợ lý chuyên nghiệp hoặc tùy chỉnh hơn, hãy nhấn `+` để tạo trợ lý tùy chỉnh.", "desc": "Kích hoạt cụm não, khơi dậy tia lửa tư duy. Trợ lý thông minh của bạn, ở đây để trò chuyện với bạn về mọi thứ.", "title": "Chuyện phiếm" }, diff --git a/locales/vi-VN/welcome.json b/locales/vi-VN/welcome.json index a75795dea75bf..40debfd3ee5ca 100644 --- a/locales/vi-VN/welcome.json +++ b/locales/vi-VN/welcome.json @@ -4,6 +4,40 @@ "market": "Thăm Thị trường", "start": "Bắt Đầu Ngay" }, + "guide": { + "agents": { + "replaceBtn": "Thay đổi", + "title": "Đề xuất trợ lý mới: " + }, + "defaultMessage": "Tôi là LobeChat, trợ lý thông minh cá nhân của bạn. Hôm nay tôi có thể giúp gì cho bạn?\nNếu bạn cần một trợ lý chuyên nghiệp hoặc tùy chỉnh hơn, hãy nhấn vào `+` để tạo trợ lý cá nhân của bạn", + "qa": { + "q01": "LobeHub là gì?", + "q02": "LobeChat là gì?", + "q03": "LobeChat có hỗ trợ cộng đồng không?", + "q04": "LobeChat hỗ trợ những chức năng nào?", + "q05": "LobeChat cách triển khai và sử dụng như thế nào?", + "q06": "Giá của LobeChat như thế nào?", + "q07": "LobeChat có miễn phí không?", + "q08": "Có phiên bản dịch vụ đám mây không?", + "q09": "Có hỗ trợ mô hình ngôn ngữ địa phương không?", + "q10": "Có hỗ trợ nhận diện và tạo hình ảnh không?", + "q11": "Có hỗ trợ tổng hợp giọng nói và nhận diện giọng nói không?", + "q12": "Có hỗ trợ hệ thống plugin không?", + "q13": "Có thị trường riêng để lấy GPTs không?", + "q14": "Có hỗ trợ nhiều nhà cung cấp dịch vụ AI không?", + "q15": "Nếu gặp vấn đề khi sử dụng, tôi nên làm gì?" + }, + "questions": { + "moreBtn": "Tìm hiểu thêm", + "title": "Mọi người đều đặt câu hỏi: " + }, + "welcome": { + "afternoon": "Chào buổi chiều", + "morning": "Chào buổi sáng", + "night": "Chào buổi tối", + "noon": "Chào buổi trưa" + } + }, "header": "Chào Mừng", "pickAgent": "Hoặc chọn từ các mẫu đại lý sau", "skip": "Bỏ Qua Tạo", diff --git a/locales/zh-CN/chat.json b/locales/zh-CN/chat.json index 138f8ddd43bef..f75ba9095af25 100644 --- a/locales/zh-CN/chat.json +++ b/locales/zh-CN/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "暂无助手", "historyRange": "历史范围", "inbox": { - "defaultMessage": "你好,我是你的智能助手,你可以问我任何问题,我会尽力回答你。如果需要获得更加专业或定制的助手,可以点击`+`创建自定义助手", "desc": "开启大脑集群,激发思维火花。你的智能助理,在这里与你交流一切", "title": "随便聊聊" }, diff --git a/locales/zh-CN/welcome.json b/locales/zh-CN/welcome.json index b6e734301ed10..c4a798511aa03 100644 --- a/locales/zh-CN/welcome.json +++ b/locales/zh-CN/welcome.json @@ -4,6 +4,40 @@ "market": "逛逛市场", "start": "立即开始" }, + "guide": { + "agents": { + "replaceBtn": "换一批", + "title": "新增助理推荐:" + }, + "defaultMessage": "我是 LobeChat 你的私人智能助理,我今天能帮你做什么?\n如果需要获得更加专业或定制的助手,可以点击 `+` 创建自定义助手", + "qa": { + "q01": "LobeHub 是什么?", + "q02": "LobeChat 是什么?", + "q03": "LobeChat 是否有社区支持?", + "q04": "LobeChat 支持哪些功能?", + "q05": "LobeChat 如何部署和使用?", + "q06": "LobeChat 的定价是如何的?", + "q07": "LobeChat 是否免费?", + "q08": "是否有云端服务版?", + "q09": "是否支持本地语言模型?", + "q10": "是否支持图像识别和生成?", + "q11": "是否支持语音合成和语音识别?", + "q12": "是否支持插件系统?", + "q13": "是否有自己的市场来获取 GPTs?", + "q14": "是否支持多种 AI 服务提供商?", + "q15": "我在使用时遇到问题应该怎么办?" + }, + "questions": { + "moreBtn": "了解更多", + "title": "大家都在问:" + }, + "welcome": { + "afternoon": "下午好", + "morning": "早上好", + "night": "晚上好", + "noon": "中午好" + } + }, "header": "欢迎使用", "pickAgent": "或从下列助手模板选择", "skip": "跳过创建", diff --git a/locales/zh-TW/chat.json b/locales/zh-TW/chat.json index b7d0899605d95..c00f3bbaffbd0 100644 --- a/locales/zh-TW/chat.json +++ b/locales/zh-TW/chat.json @@ -21,7 +21,6 @@ "emptyAgent": "暫無助手", "historyRange": "歷史範圍", "inbox": { - "defaultMessage": "你好,我是你的智能助手,你可以問我任何問題,我會盡力回答你。如果需要獲得更專業或定制的助手,可以點擊`+`創建自定義助手", "desc": "開啟大腦集群,激發思維火花。你的智能助理,在這裡與你交流一切", "title": "隨便聊聊" }, diff --git a/locales/zh-TW/welcome.json b/locales/zh-TW/welcome.json index 655e582441df4..b8107aa7db800 100644 --- a/locales/zh-TW/welcome.json +++ b/locales/zh-TW/welcome.json @@ -4,6 +4,40 @@ "market": "逛逛市場", "start": "馬上開始" }, + "guide": { + "agents": { + "replaceBtn": "換一批", + "title": "新增助理推薦:" + }, + "defaultMessage": "我是 LobeChat 你的私人智能助理,我今天能幫你做什麼?\n如果需要獲得更加專業或定制的助手,可以點擊 `+` 創建自定義助手", + "qa": { + "q01": "LobeHub 是什麼?", + "q02": "LobeChat 是什麼?", + "q03": "LobeChat 是否有社區支持?", + "q04": "LobeChat 支持哪些功能?", + "q05": "LobeChat 如何部署和使用?", + "q06": "LobeChat 的定價是如何的?", + "q07": "LobeChat 是否免費?", + "q08": "是否有雲端服務版?", + "q09": "是否支持本地語言模型?", + "q10": "是否支持圖像識別和生成?", + "q11": "是否支持語音合成和語音識別?", + "q12": "是否支持插件系統?", + "q13": "是否有自己的市場來獲取 GPTs?", + "q14": "是否支持多種 AI 服務提供商?", + "q15": "我在使用時遇到問題應該怎麼辦?" + }, + "questions": { + "moreBtn": "了解更多", + "title": "大家都在問:" + }, + "welcome": { + "afternoon": "下午好", + "morning": "早上好", + "night": "晚上好", + "noon": "中午好" + } + }, "header": "歡迎", "pickAgent": "或從以下助理範本中選擇", "skip": "跳過建立步驟", diff --git a/src/app/chat/features/Migration/Failed.tsx b/src/app/chat/features/Migration/Failed.tsx index c929999fb40aa..bdf660f94bc33 100644 --- a/src/app/chat/features/Migration/Failed.tsx +++ b/src/app/chat/features/Migration/Failed.tsx @@ -10,6 +10,7 @@ import { Trans, useTranslation } from 'react-i18next'; import { Flexbox } from 'react-layout-kit'; import Balancer from 'react-wrap-balancer'; +import { GITHUB_ISSUES } from '@/const/url'; import { githubService } from '@/services/github'; import ExportConfigButton from './ExportConfigButton'; @@ -96,7 +97,7 @@ const Failed = memo(({ error, state, setUpgradeStatus, setError, up 非常抱歉,数据库升级过程发生异常。请重试升级,或 { e.preventDefault(); githubService.submitDBV1UpgradeError(1, error!); diff --git a/src/config/client.ts b/src/config/client.ts index 8c93f39ea4a22..8dedf8d61578e 100644 --- a/src/config/client.ts +++ b/src/config/client.ts @@ -30,8 +30,6 @@ declare global { NEXT_PUBLIC_I18N_DEBUG_SERVER: string; NEXT_PUBLIC_DEVELOPER_DEBUG: string; - - NEXT_PUBLIC_LOBE_CHAT_DOCS: string; } } } @@ -39,9 +37,6 @@ declare global { export const getClientConfig = () => ({ BASE_PATH: process.env.NEXT_PUBLIC_BASE_PATH || '', - // docs - LOBE_CHAT_DOCS: process.env.NEXT_PUBLIC_LOBE_CHAT_DOCS, - // Plausible Analytics ANALYTICS_PLAUSIBLE: process.env.NEXT_PUBLIC_ANALYTICS_PLAUSIBLE === '1', PLAUSIBLE_DOMAIN: process.env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN, diff --git a/src/const/guide.ts b/src/const/guide.ts new file mode 100644 index 0000000000000..6323fafc4f44e --- /dev/null +++ b/src/const/guide.ts @@ -0,0 +1,86 @@ +import urlJoin from 'url-join'; + +import { + BLOG, + DOCKER_IMAGE, + EMAIL_BUSINESS, + EMAIL_SUPPORT, + GITHUB, + OFFICIAL_SITE, + OFFICIAL_URL, + SELF_HOSTING_DOCUMENTS, + USAGE_DOCUMENTS, + WIKI, +} from '@/const/url'; + +export const INBOX_GUIDE_SYSTEMROLE = `# Role: LobeChat Support Assistant + +## About [LobeHub](${OFFICIAL_SITE}) + +LobeHub is an organization of design-engineers dedicated to providing advanced design components and tools for AI-generated content (AIGC). +It aims to create a technology-driven community platform that enables the sharing of knowledge and ideas, fostering inspiration and collaboration. + +Adopting a Bootstrapping approach, LobeHub is committed to delivering an open, transparent, and user-friendly product ecosystem for both casual users and professional developers. +LobeHub serves as an AI Agent playground, where creativity and innovation meet. + +## About [LobeChat](${OFFICIAL_URL}) + +LobeChat, a product of LobeHub, is an open-source ChatGPT/LLMs UI/Framework designed for modern LLMs/AI applications. +Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Perplexity / Bedrock / Azure / Mistral / Ollama ), Multi-Modals (Vision/TTS) and plugin system. +and offers a one-click FREE deployment for a private ChatGPT chat application, making it accessible and customizable for a wide range of users. + +### Features + +- [Multi-Model Service Provider Support](${urlJoin(USAGE_DOCUMENTS, '/features/multi-ai-providers')}) +- [Local Large Language Model (LLM) Support](${urlJoin(USAGE_DOCUMENTS, '/features/local-llm')}) +- [Model Visual Recognition](${urlJoin(USAGE_DOCUMENTS, '/features/vision')}) +- [TTS & STT Voice Conversation](${urlJoin(USAGE_DOCUMENTS, '/features/tts')}) +- [Text to Image Generation](${urlJoin(USAGE_DOCUMENTS, '/features/text-to-image')}) +- [Plugin System (Function Calling)](${urlJoin(USAGE_DOCUMENTS, '/features/plugin-system')}) +- [Agent Market (GPTs)](${urlJoin(USAGE_DOCUMENTS, '/features/agent-market')}) + +### CE and Cloud Version + +LobeChat is currently available as a community preview version, completely open-source and free of charge. The Cloud paid version is under development. +Those interested can visit the [official website](${OFFICIAL_SITE}) to join the wishlist. The early test version will be launched in May, and the pricing will be announced in real-time. + +### Self Hosting + +LobeChat provides Self-Hosted Version with [Vercel](${urlJoin(SELF_HOSTING_DOCUMENTS, '/platform/vercel')}) and [Docker Image](${DOCKER_IMAGE}). +This allows you to deploy your own chatbot within a few minutes without any prior knowledge. + +**IMPORTANT** + +When users ask about usage or deployment, DO NOT MAKE UP ANSWERS. Instead, guide them to the relevant documentation!!! + +Learn more about [Build your own LobeChat](${SELF_HOSTING_DOCUMENTS}) by checking it out. + +## Resources Links + +In the response, please try to pick and include the relevant links below, and if a relevant answer cannot be provided, also offer the user these related links: + +- Official Website: ${OFFICIAL_SITE} +- Community Preview: ${OFFICIAL_URL} +- GitHub Repository: ${GITHUB} +- Latest News: ${BLOG} +- Usage Documentation: ${USAGE_DOCUMENTS} +- Self-Hosting Documentation: ${SELF_HOSTING_DOCUMENTS} +- Development Guide: ${WIKI} +- Email Support: ${EMAIL_SUPPORT} +- Business Inquiries: ${EMAIL_BUSINESS} + +## Workflow + +1. Greet users and introduce the role and purpose of LobeHub LobeChat Support Assistant. +2. Understand and address user inquiries related to the LobeHub ecosystem and LobeChat application. +3. If unable to resolve user queries, pick and guide them to appropriate resources listed above. + +## Initialization + +As the role , I will adhere to the following guidelines: +- Provide accurate and helpful information to users. +- Maintain a friendly and professional demeanor. +- Direct users to the appropriate resources when necessary. +- Keep the language of the response consistent with the language of the user input; if they are not consistent, then translate. + +Welcome users to LobeChat, introduce myself as the , and inform them about the services and support available. Then, guide users through the for assistance.`; diff --git a/src/const/url.ts b/src/const/url.ts index c0f2f9ed57ed9..2e035da983fdf 100644 --- a/src/const/url.ts +++ b/src/const/url.ts @@ -1,30 +1,34 @@ import urlJoin from 'url-join'; -import { getClientConfig } from '@/config/client'; import { withBasePath } from '@/utils/basePath'; import pkg from '../../package.json'; import { INBOX_SESSION_ID } from './session'; export const OFFICIAL_URL = 'https://chat-preview.lobehub.com/'; +export const OFFICIAL_SITE = 'https://lobehub.com/'; export const getCanonicalUrl = (path: string) => urlJoin(OFFICIAL_URL, path); export const GITHUB = pkg.homepage; +export const GITHUB_ISSUES = urlJoin(GITHUB, 'issues/new'); export const CHANGELOG = urlJoin(GITHUB, 'blob/main/CHANGELOG.md'); +export const DOCKER_IMAGE = 'https://hub.docker.com/r/lobehub/lobe-chat'; -const { LOBE_CHAT_DOCS } = getClientConfig(); +export const DOCUMENTS = urlJoin(OFFICIAL_SITE, '/docs'); +export const USAGE_DOCUMENTS = urlJoin(DOCUMENTS, '/usage'); +export const SELF_HOSTING_DOCUMENTS = urlJoin(DOCUMENTS, '/self-hosting'); -export const DOCUMENTS = !!LOBE_CHAT_DOCS ? '/docs' : 'https://lobehub.com/docs'; +export const WIKI = urlJoin(GITHUB, 'wiki'); +export const WIKI_PLUGIN_GUIDE = urlJoin(USAGE_DOCUMENTS, '/plugins/development'); +export const MANUAL_UPGRADE_URL = urlJoin(SELF_HOSTING_DOCUMENTS, '/advanced/upstream-sync'); -export const WIKI_PLUGIN_GUIDE = urlJoin(GITHUB, 'wiki', 'Plugin-Development'); +export const BLOG = urlJoin(OFFICIAL_SITE, 'blog'); -export const MANUAL_UPGRADE_URL = urlJoin(GITHUB, 'wiki', 'Upstream-Sync'); - -export const ABOUT = pkg.homepage; +export const ABOUT = OFFICIAL_SITE; export const FEEDBACK = pkg.bugs.url; export const DISCORD = 'https://discord.gg/AYFPHvv2jT'; -export const PRIVACY_URL = 'https://lobehub.com/privacy'; +export const PRIVACY_URL = urlJoin(OFFICIAL_SITE, '/privacy'); export const PLUGINS_INDEX_URL = 'https://chat-plugins.lobehub.com'; @@ -38,3 +42,6 @@ export const SESSION_CHAT_URL = (id: string = INBOX_SESSION_ID, mobile?: boolean mobile ? `/chat/mobile?session=${id}` : `/chat?session=${id}`; export const imageUrl = (filename: string) => withBasePath(`/images/${filename}`); + +export const EMAIL_SUPPORT = 'support@lobehub.com'; +export const EMAIL_BUSINESS = 'hello@lobehub.com'; diff --git a/src/features/Conversation/components/InboxWelcome/AgentsSuggest.tsx b/src/features/Conversation/components/InboxWelcome/AgentsSuggest.tsx new file mode 100644 index 0000000000000..918251b8c61d7 --- /dev/null +++ b/src/features/Conversation/components/InboxWelcome/AgentsSuggest.tsx @@ -0,0 +1,108 @@ +'use client'; + +import { ActionIcon, Avatar, Grid } from '@lobehub/ui'; +import { Skeleton, Typography } from 'antd'; +import { createStyles } from 'antd-style'; +import isEqual from 'fast-deep-equal'; +import { RefreshCw } from 'lucide-react'; +import Link from 'next/link'; +import { memo, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Flexbox } from 'react-layout-kit'; + +import { agentMarketSelectors, useMarketStore } from '@/store/market'; + +const { Paragraph } = Typography; + +const useStyles = createStyles(({ css, token }) => ({ + card: css` + position: relative; + + height: 100%; + min-height: 110px; + padding: 16px; + + color: ${token.colorText}; + + background: ${token.colorBgContainer}; + border-radius: ${token.borderRadius}px; + + &:hover { + background: ${token.colorBgElevated}; + } + `, + cardDesc: css` + margin-block: 0 !important; + color: ${token.colorTextDescription}; + `, + cardTitle: css` + margin-block: 0 !important; + font-size: 16px; + font-weight: bold; + `, + icon: css` + color: ${token.colorTextSecondary}; + `, + title: css` + color: ${token.colorTextDescription}; + `, +})); + +const AgentsSuggest = memo(() => { + const { t } = useTranslation('welcome'); + const [sliceStart, setSliceStart] = useState(0); + const useFetchAgentList = useMarketStore((s) => s.useFetchAgentList); + const { isLoading } = useFetchAgentList(); + const agentList = useMarketStore((s) => agentMarketSelectors.getAgentList(s), isEqual); + const { styles } = useStyles(); + + const loadingCards = Array.from({ length: 4 }).map((_, index) => ( + + + + )); + + const cards = useMemo( + () => + agentList.slice(sliceStart, sliceStart + 4).map((agent) => ( + + + + + + {agent.meta.title} + + + {agent.meta.description} + + + + + )), + [agentList, sliceStart], + ); + + const handleRefresh = () => { + if (!agentList) return; + setSliceStart(Math.floor((Math.random() * agentList.length) / 2)); + }; + + return ( + + +
{t('guide.agents.title')}
+ +
+ + {isLoading ? loadingCards : cards} + +
+ ); +}); + +export default AgentsSuggest; diff --git a/src/features/Conversation/components/InboxWelcome/QuestionSuggest.tsx b/src/features/Conversation/components/InboxWelcome/QuestionSuggest.tsx new file mode 100644 index 0000000000000..a52cc413fa558 --- /dev/null +++ b/src/features/Conversation/components/InboxWelcome/QuestionSuggest.tsx @@ -0,0 +1,99 @@ +'use client'; + +import { ActionIcon } from '@lobehub/ui'; +import { createStyles } from 'antd-style'; +import { shuffle } from 'lodash-es'; +import { ArrowRight } from 'lucide-react'; +import Link from 'next/link'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Flexbox } from 'react-layout-kit'; + +import { USAGE_DOCUMENTS } from '@/const/url'; +import { useChatInput } from '@/features/ChatInput/useChatInput'; + +const useStyles = createStyles(({ css, token }) => ({ + card: css` + cursor: pointer; + + padding: 12px 24px; + + color: ${token.colorText}; + + background: ${token.colorBgContainer}; + border-radius: 48px; + + &:hover { + background: ${token.colorBgElevated}; + } + `, + icon: css` + color: ${token.colorTextSecondary}; + `, + title: css` + color: ${token.colorTextDescription}; + `, +})); + +const qa = shuffle([ + 'q01', + 'q02', + 'q03', + 'q04', + 'q05', + 'q06', + 'q07', + 'q08', + 'q09', + 'q10', + 'q11', + 'q12', + 'q13', + 'q14', + 'q15', +]).slice(0, 5); + +const QuestionSuggest = memo(() => { + const { onInput, onSend } = useChatInput(); + const { t } = useTranslation('welcome'); + const { styles } = useStyles(); + + const handoleSend = (qa: string) => { + onInput(qa); + onSend(); + }; + + return ( + + +
{t('guide.questions.title')}
+ + + +
+ + {qa.map((item) => { + const text = t(`guide.qa.${item}` as any); + return ( + handoleSend(text)} + > + {t(text)} + + ); + })} + +
+ ); +}); + +export default QuestionSuggest; diff --git a/src/features/Conversation/components/InboxWelcome/index.tsx b/src/features/Conversation/components/InboxWelcome/index.tsx new file mode 100644 index 0000000000000..6bea55a2e7a3a --- /dev/null +++ b/src/features/Conversation/components/InboxWelcome/index.tsx @@ -0,0 +1,76 @@ +'use client'; + +import { FluentEmoji, Markdown } from '@lobehub/ui'; +import { createStyles } from 'antd-style'; +import { memo, useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Center, Flexbox } from 'react-layout-kit'; + +import AgentsSuggest from './AgentsSuggest'; +import QuestionSuggest from './QuestionSuggest'; + +const useStyles = createStyles(({ css, responsive }) => ({ + container: css` + align-items: center; + ${responsive.mobile} { + align-items: flex-start; + } + `, + desc: css` + font-size: 14px; + text-align: center; + ${responsive.mobile} { + text-align: left; + } + `, + title: css` + margin-top: 0.2em; + margin-bottom: 0; + + font-size: 32px; + font-weight: bolder; + line-height: 1; + ${responsive.mobile} { + font-size: 24px; + } + `, +})); + +const InboxWelcome = memo(() => { + const { t } = useTranslation('welcome'); + const [greeting, setGreeting] = useState<'morning' | 'noon' | 'afternoon' | 'night'>(); + const { styles } = useStyles(); + + useEffect(() => { + const now = new Date(); + const hours = now.getHours(); + + if (hours >= 4 && hours < 11) { + setGreeting('morning'); + } else if (hours >= 11 && hours < 14) { + setGreeting('noon'); + } else if (hours >= 14 && hours < 18) { + setGreeting('afternoon'); + } else { + setGreeting('night'); + } + }, []); + + return ( +
+ + + +

{greeting && t(`guide.welcome.${greeting}`)}

+
+ + {t('guide.defaultMessage')} + + + +
+
+ ); +}); + +export default InboxWelcome; diff --git a/src/features/Conversation/components/VirtualizedList/index.tsx b/src/features/Conversation/components/VirtualizedList/index.tsx index f1de204ba46ce..2139b75cccece 100644 --- a/src/features/Conversation/components/VirtualizedList/index.tsx +++ b/src/features/Conversation/components/VirtualizedList/index.tsx @@ -9,10 +9,15 @@ import { isMobileScreen } from '@/utils/screen'; import AutoScroll from '../AutoScroll'; import Item from '../ChatItem'; +import InboxWelcome from '../InboxWelcome'; + +const WELCOME_ID = 'welcome'; const itemContent = (index: number, id: string) => { const isMobile = isMobileScreen(); + if (id === WELCOME_ID) return ; + return index === 0 ? (
) : ( @@ -27,15 +32,17 @@ const VirtualizedList = memo(({ mobile }) => { const virtuosoRef = useRef(null); const [atBottom, setAtBottom] = useState(true); - const data = useChatStore( - (s) => ['empty', ...chatSelectors.currentChatIDsWithGuideMessage(s)], - isEqual, - ); const [id, chatLoading] = useChatStore((s) => [ chatSelectors.currentChatKey(s), chatSelectors.currentChatLoadingState(s), ]); + const data = useChatStore((s) => { + const showInboxWelcome = chatSelectors.showInboxWelcome(s); + const ids = showInboxWelcome ? [WELCOME_ID] : chatSelectors.currentChatIDsWithGuideMessage(s); + return ['empty', ...ids]; + }, isEqual); + useEffect(() => { if (virtuosoRef.current) { virtuosoRef.current.scrollToIndex({ align: 'end', behavior: 'auto', index: 'LAST' }); diff --git a/src/layout/GlobalProvider/AppTheme.tsx b/src/layout/GlobalProvider/AppTheme.tsx index 8e85a0e83c674..c63b704de72b4 100644 --- a/src/layout/GlobalProvider/AppTheme.tsx +++ b/src/layout/GlobalProvider/AppTheme.tsx @@ -5,6 +5,7 @@ import { App } from 'antd'; import { ThemeAppearance, createStyles } from 'antd-style'; import 'antd/dist/reset.css'; import Image from 'next/image'; +import Link from 'next/link'; import { PropsWithChildren, ReactNode, memo, useEffect } from 'react'; import AntdStaticMethods from '@/components/AntdStaticMethods'; @@ -112,7 +113,7 @@ const AppTheme = memo( > - + {children} diff --git a/src/locales/default/chat.ts b/src/locales/default/chat.ts index 4da22305a6a81..9066cc7971caa 100644 --- a/src/locales/default/chat.ts +++ b/src/locales/default/chat.ts @@ -22,8 +22,6 @@ export default { emptyAgent: '暂无助手', historyRange: '历史范围', inbox: { - defaultMessage: - '你好,我是你的智能助手,你可以问我任何问题,我会尽力回答你。如果需要获得更加专业或定制的助手,可以点击`+`创建自定义助手', desc: '开启大脑集群,激发思维火花。你的智能助理,在这里与你交流一切', title: '随便聊聊', }, diff --git a/src/locales/default/welcome.ts b/src/locales/default/welcome.ts index b850c05f7c0bc..6d37adb0d4eee 100644 --- a/src/locales/default/welcome.ts +++ b/src/locales/default/welcome.ts @@ -4,6 +4,41 @@ export default { market: '逛逛市场', start: '立即开始', }, + guide: { + agents: { + replaceBtn: '换一批', + title: '新增助理推荐:', + }, + defaultMessage: + '我是 LobeChat 你的私人智能助理,我今天能帮你做什么?\n如果需要获得更加专业或定制的助手,可以点击 `+` 创建自定义助手', + qa: { + q01: 'LobeHub 是什么?', + q02: 'LobeChat 是什么?', + q03: 'LobeChat 是否有社区支持?', + q04: 'LobeChat 支持哪些功能?', + q05: 'LobeChat 如何部署和使用?', + q06: 'LobeChat 的定价是如何的?', + q07: 'LobeChat 是否免费?', + q08: '是否有云端服务版?', + q09: '是否支持本地语言模型?', + q10: '是否支持图像识别和生成?', + q11: '是否支持语音合成和语音识别?', + q12: '是否支持插件系统?', + q13: '是否有自己的市场来获取 GPTs?', + q14: '是否支持多种 AI 服务提供商?', + q15: '我在使用时遇到问题应该怎么办?', + }, + questions: { + moreBtn: '了解更多', + title: '大家都在问:', + }, + welcome: { + afternoon: '下午好', + morning: '早上好', + night: '晚上好', + noon: '中午好', + }, + }, header: '欢迎使用', pickAgent: '或从下列助手模板选择', skip: '跳过创建', diff --git a/src/services/chat.ts b/src/services/chat.ts index 51059e767fd6c..9d145b791d88a 100644 --- a/src/services/chat.ts +++ b/src/services/chat.ts @@ -3,6 +3,8 @@ import { produce } from 'immer'; import { merge } from 'lodash-es'; import { createErrorResponse } from '@/app/api/errorResponse'; +import { INBOX_GUIDE_SYSTEMROLE } from '@/const/guide'; +import { INBOX_SESSION_ID } from '@/const/session'; import { DEFAULT_AGENT_CONFIG } from '@/const/settings'; import { TracePayload, TraceTagMap } from '@/const/trace'; import { AgentRuntime, ChatCompletionErrorPayload, ModelProvider } from '@/libs/agent-runtime'; @@ -183,11 +185,14 @@ class ChatService { ); // ============ 1. preprocess messages ============ // - const oaiMessages = this.processMessages({ - messages, - model: payload.model, - tools: enabledPlugins, - }); + const oaiMessages = this.processMessages( + { + messages, + model: payload.model, + tools: enabledPlugins, + }, + options, + ); // ============ 2. preprocess tools ============ // @@ -371,15 +376,18 @@ class ChatService { return await data?.text(); }; - private processMessages = ({ - messages, - tools, - model, - }: { - messages: ChatMessage[]; - model: string; - tools?: string[]; - }): OpenAIChatMessage[] => { + private processMessages = ( + { + messages, + tools, + model, + }: { + messages: ChatMessage[]; + model: string; + tools?: string[]; + }, + options?: FetchOptions, + ): OpenAIChatMessage[] => { // handle content type for vision model // for the models with visual ability, add image url to content // refs: https://platform.openai.com/docs/guides/vision/quick-start @@ -424,22 +432,33 @@ class ChatService { }); return produce(postMessages, (draft) => { - if (!tools || tools.length === 0) return; - const hasFC = modelProviderSelectors.isModelEnabledFunctionCall(model)( - useUserStore.getState(), - ); - if (!hasFC) return; + // Inject InboxGuide SystemRole + const inboxGuideSystemRole = + options?.trace?.sessionId === INBOX_SESSION_ID && INBOX_GUIDE_SYSTEMROLE; - const systemMessage = draft.find((i) => i.role === 'system'); + // Inject Tool SystemRole + const hasTools = tools && tools?.length > 0; + const hasFC = + hasTools && + modelProviderSelectors.isModelEnabledFunctionCall(model)(useUserStore.getState()); + const toolsSystemRoles = + hasFC && toolSelectors.enabledSystemRoles(tools)(useToolStore.getState()); - const toolsSystemRoles = toolSelectors.enabledSystemRoles(tools)(useToolStore.getState()); - if (!toolsSystemRoles) return; + const injectSystemRoles = [inboxGuideSystemRole, toolsSystemRoles] + .filter(Boolean) + .join('\n\n'); + + if (!injectSystemRoles) return; + + const systemMessage = draft.find((i) => i.role === 'system'); if (systemMessage) { - systemMessage.content = systemMessage.content + '\n\n' + toolsSystemRoles; + systemMessage.content = [systemMessage.content, injectSystemRoles] + .filter(Boolean) + .join('\n\n'); } else { draft.unshift({ - content: toolsSystemRoles, + content: injectSystemRoles, role: 'system', }); } @@ -451,7 +470,7 @@ class ChatService { const enabled = preferenceSelectors.userAllowTrace(useUserStore.getState()); - if (!enabled) return { enabled: false }; + if (!enabled) return { ...trace, enabled: false }; return { ...trace, diff --git a/src/store/chat/slices/message/selectors.test.ts b/src/store/chat/slices/message/selectors.test.ts index 5218510b15969..d197eb3e15016 100644 --- a/src/store/chat/slices/message/selectors.test.ts +++ b/src/store/chat/slices/message/selectors.test.ts @@ -225,7 +225,7 @@ describe('chatSelectors', () => { const chats = chatSelectors.currentChatsWithGuideMessage(metaData)(state); - expect(chats[0].content).toEqual('inbox.defaultMessage'); // Assuming translation returns a string containing this + expect(chats[0].content).toEqual(''); // Assuming translation returns a string containing this }); it('should use agent default message for non-inbox sessions', () => { @@ -260,4 +260,30 @@ describe('chatSelectors', () => { vi.restoreAllMocks(); }); }); + + describe('showInboxWelcome', () => { + it('should return false if the active session is not the inbox session', () => { + const state = merge(initialStore, { activeId: 'someActiveId' }); + const result = chatSelectors.showInboxWelcome(state); + expect(result).toBe(false); + }); + + it('should return false if there are existing messages in the inbox session', () => { + const state = merge(initialStore, { + activeId: INBOX_SESSION_ID, + messages: mockMessages, + }); + const result = chatSelectors.showInboxWelcome(state); + expect(result).toBe(false); + }); + + it('should return true if the active session is the inbox session and there are no existing messages', () => { + const state = merge(initialStore, { + activeId: INBOX_SESSION_ID, + messages: [], + }); + const result = chatSelectors.showInboxWelcome(state); + expect(result).toBe(true); + }); + }); }); diff --git a/src/store/chat/slices/message/selectors.ts b/src/store/chat/slices/message/selectors.ts index 67b31ea8d4a90..494ad67a25981 100644 --- a/src/store/chat/slices/message/selectors.ts +++ b/src/store/chat/slices/message/selectors.ts @@ -52,6 +52,15 @@ const currentChats = (s: ChatStore): ChatMessage[] => { }; const initTime = Date.now(); + +const showInboxWelcome = (s: ChatStore): boolean => { + const isInbox = s.activeId === INBOX_SESSION_ID; + if (!isInbox) return false; + const data = currentChats(s); + const isBrandNewChat = data.length === 0; + return isBrandNewChat; +}; + // 针对新助手添加初始化时的自定义消息 const currentChatsWithGuideMessage = (meta: MetaData) => @@ -64,7 +73,7 @@ const currentChatsWithGuideMessage = const [activeId, isInbox] = [s.activeId, s.activeId === INBOX_SESSION_ID]; - const inboxMsg = t('inbox.defaultMessage', { ns: 'chat' }); + const inboxMsg = ''; const agentSystemRoleMsg = t('agentDefaultMessageWithSystemRole', { name: meta.title || t('defaultAgent'), ns: 'chat', @@ -137,4 +146,5 @@ export const chatSelectors = { getMessageById, getTraceIdByMessageId, latestMessage, + showInboxWelcome, };