Skip to content

Commit d4df317

Browse files
author
Jicheng Lu
committed
add render text
1 parent d807ec6 commit d4df317

File tree

4 files changed

+33
-10
lines changed

4 files changed

+33
-10
lines changed

src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Audio.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ public async Task<string> SpeechToText(InstructFileModel audio, string? text = n
99
if (string.IsNullOrWhiteSpace(text))
1010
{
1111
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
12-
text = await GetAgentTemplate(innerAgentId, options?.TemplateName);
12+
text = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
1313
}
14-
14+
else
15+
{
16+
text = RenderText(text, options?.Data);
17+
}
18+
1519
var completion = CompletionProvider.GetAudioTranscriber(_services, provider: options?.Provider, model: options?.Model);
1620
var audioBinary = await DownloadFile(audio);
1721
using var stream = audioBinary.ToStream();

src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Image.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ public partial class FileInstructService
1010
public async Task<string> ReadImages(string text, IEnumerable<InstructFileModel> images, InstructOptions? options = null)
1111
{
1212
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
13-
var instruction = await GetAgentTemplate(innerAgentId, options?.TemplateName);
13+
var instruction = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
14+
text = RenderText(text, options?.Data);
1415

1516
var completion = CompletionProvider.GetChatCompletion(_services, provider: options?.Provider ?? "openai", model: options?.Model ?? "gpt-4o", multiModal: true);
1617
var message = await completion.GetChatCompletions(new Agent()
@@ -48,7 +49,8 @@ await hook.OnResponseGenerated(new InstructResponseModel
4849
public async Task<RoleDialogModel> GenerateImage(string text, InstructOptions? options = null)
4950
{
5051
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
51-
var instruction = await GetAgentTemplate(innerAgentId, options?.TemplateName);
52+
var instruction = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
53+
text = RenderText(text, options?.Data);
5254

5355
var textContent = text.IfNullOrEmptyAs(instruction).IfNullOrEmptyAs(string.Empty);
5456
var completion = CompletionProvider.GetImageCompletion(_services, provider: options?.Provider ?? "openai", model: options?.Model ?? "gpt-image-1-mini");
@@ -124,7 +126,8 @@ public async Task<RoleDialogModel> EditImage(string text, InstructFileModel imag
124126
}
125127

126128
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
127-
var instruction = await GetAgentTemplate(innerAgentId, options?.TemplateName);
129+
var instruction = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
130+
text = RenderText(text, options?.Data);
128131

129132
var completion = CompletionProvider.GetImageCompletion(_services, provider: options?.Provider ?? "openai", model: options?.Model ?? "gpt-image-1-mini");
130133
var binary = await DownloadFile(image);
@@ -173,7 +176,8 @@ public async Task<RoleDialogModel> EditImage(string text, InstructFileModel imag
173176
}
174177

175178
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
176-
var instruction = await GetAgentTemplate(innerAgentId, options?.TemplateName);
179+
var instruction = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
180+
text = RenderText(text, options?.Data);
177181

178182
var completion = CompletionProvider.GetImageCompletion(_services, provider: options?.Provider ?? "openai", model: options?.Model ?? "gpt-image-1-mini");
179183
var imageBinary = await DownloadFile(image);
@@ -225,7 +229,8 @@ await hook.OnResponseGenerated(new InstructResponseModel
225229
public async Task<RoleDialogModel> ComposeImages(string text, InstructFileModel[] images, InstructOptions? options = null)
226230
{
227231
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
228-
var instruction = await GetAgentTemplate(innerAgentId, options?.TemplateName);
232+
var instruction = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
233+
text = RenderText(text, options?.Data);
229234

230235
var completion = CompletionProvider.GetImageCompletion(_services, provider: options?.Provider ?? "openai", model: options?.Model ?? "gpt-image-1-mini");
231236

src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Pdf.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ public async Task<string> ReadPdf(string text, List<InstructFileModel> files, In
4040
}
4141

4242
var innerAgentId = options?.AgentId ?? Guid.Empty.ToString();
43-
var instruction = await GetAgentTemplate(innerAgentId, options?.TemplateName);
43+
var instruction = await RenderAgentTemplate(innerAgentId, options?.TemplateName, options?.Data);
44+
text = RenderText(text, options?.Data);
4445

4546
var completion = CompletionProvider.GetChatCompletion(_services, provider: provider,
4647
model: options?.Model ?? "gpt-5-mini", multiModal: true);

src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
using BotSharp.Abstraction.Agents.Models;
12
using BotSharp.Abstraction.Files.Converters;
3+
using BotSharp.Abstraction.Templating;
24

35
namespace BotSharp.Core.Files.Services;
46

@@ -60,7 +62,7 @@ private async Task<BinaryData> DownloadFile(InstructFileModel file)
6062
}
6163
}
6264

63-
private async Task<string?> GetAgentTemplate(string agentId, string? templateName)
65+
private async Task<string?> RenderAgentTemplate(string agentId, string? templateName, IDictionary<string, object>? data = null)
6466
{
6567
if (string.IsNullOrWhiteSpace(agentId) || string.IsNullOrWhiteSpace(templateName))
6668
{
@@ -74,10 +76,21 @@ private async Task<BinaryData> DownloadFile(InstructFileModel file)
7476
return null;
7577
}
7678

77-
var instruction = agentService.RenderTemplate(agent, templateName);
79+
var instruction = agentService.RenderTemplate(agent, templateName, data);
7880
return instruction;
7981
}
8082

83+
private string RenderText(string text, IDictionary<string, object>? data = null)
84+
{
85+
var agentService = _services.GetRequiredService<IAgentService>();
86+
var render = _services.GetRequiredService<ITemplateRender>();
87+
88+
var renderData = data != null
89+
? new Dictionary<string, object>(data)
90+
: agentService.CollectRenderData(new Agent());
91+
return render.Render(text, renderData);
92+
}
93+
8194
private string BuildFileName(string? name, string? extension, string defaultName, string defaultExtension)
8295
{
8396
var fname = name.IfNullOrEmptyAs(defaultName);

0 commit comments

Comments
 (0)