Merge branch 'master' of https://github.com/SciSharp/BotSharp into features/add-user-avatar

This commit is contained in:
Jicheng Lu 2024-05-22 10:39:11 -05:00
commit 948a3981a6
2 changed files with 14 additions and 3 deletions

View file

@ -6,6 +6,7 @@ using BotSharp.Abstraction.Templating;
using BotSharp.Abstraction.Translation.Models;
using System.Collections;
using System.Reflection;
using System.Text.Encodings.Web;
namespace BotSharp.Core.Translation;
@ -62,10 +63,18 @@ public class TranslationService : ITranslationService
Id = i + 1,
Text = text
}).ToList();
var translatedStringList = await InnerTranslate(texts, language, template);
try
{
var translatedStringList = await InnerTranslate(texts, language, template);
int retry = 0;
while (translatedStringList.Texts.Length != texts.Count && retry < 3)
{
translatedStringList = await InnerTranslate(texts, language, template);
retry++;
}
// Override language if it's Unknown, it's used to output the corresponding language.
var states = _services.GetRequiredService<IConversationStateService>();
if (!states.ContainsState(StateConst.LANGUAGE))
@ -302,7 +311,8 @@ public class TranslationService : ITranslationService
/// <returns></returns>
private async Task<TranslationOutput> InnerTranslate(List<TranslationInput> texts, string language, string template)
{
var jsonString = JsonSerializer.Serialize(texts);
var options = new JsonSerializerOptions() { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping };
var jsonString = JsonSerializer.Serialize(texts, options);
var translator = new Agent
{
Id = Guid.Empty.ToString(),

View file

@ -2,4 +2,5 @@
=====
Translate all the above sentences into {{ language }}.
Output the translated text in JSON {"input_lang":"original text language", "output_count": {{ text_list_size }}, "output_lang":"{{ language }}", "texts":[{"id": 1, "text":""}]}.
Output the translated text in JSON {"input_lang":"original text language", "output_count": {{ text_list_size }}, "output_lang":"{{ language }}", "texts":[{"id": 1, "text":""},{"id": 2, "text":""}]}.
The "output_count" must equal the length of the "texts" array in the output.