Public Access
fix: support streaming screenshot OCR
This commit is contained in:
@@ -659,9 +659,9 @@ public sealed class LiteLlmResponsesChatClient : IChatClient
|
||||
private static void AddInputItem(JsonArray input, StringBuilder instructions, ChatMessage message)
|
||||
{
|
||||
var role = message.Role.Value;
|
||||
var text = message.Text;
|
||||
if (role == ChatRole.System.Value)
|
||||
{
|
||||
var text = message.Text;
|
||||
if (!string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
instructions.AppendLine(text);
|
||||
@@ -670,21 +670,37 @@ public sealed class LiteLlmResponsesChatClient : IChatClient
|
||||
return;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(text))
|
||||
var isAssistant = role == ChatRole.Assistant.Value;
|
||||
var messageContent = new JsonArray();
|
||||
foreach (var content in message.Contents)
|
||||
{
|
||||
if (content is TextContent textContent && !string.IsNullOrWhiteSpace(textContent.Text))
|
||||
{
|
||||
messageContent.Add(new JsonObject
|
||||
{
|
||||
["type"] = isAssistant ? "output_text" : "input_text",
|
||||
["text"] = textContent.Text
|
||||
});
|
||||
}
|
||||
else if (!isAssistant &&
|
||||
content is DataContent dataContent &&
|
||||
dataContent.HasTopLevelMediaType("image"))
|
||||
{
|
||||
messageContent.Add(new JsonObject
|
||||
{
|
||||
["type"] = "input_image",
|
||||
["image_url"] = dataContent.Uri.ToString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (messageContent.Count > 0)
|
||||
{
|
||||
var isAssistant = role == ChatRole.Assistant.Value;
|
||||
input.Add(new JsonObject
|
||||
{
|
||||
["type"] = "message",
|
||||
["role"] = isAssistant ? "assistant" : "user",
|
||||
["content"] = new JsonArray
|
||||
{
|
||||
new JsonObject
|
||||
{
|
||||
["type"] = isAssistant ? "output_text" : "input_text",
|
||||
["text"] = text
|
||||
}
|
||||
}
|
||||
["content"] = messageContent
|
||||
});
|
||||
}
|
||||
|
||||
@@ -761,7 +777,7 @@ public sealed class LiteLlmResponsesChatClient : IChatClient
|
||||
return Math.Max(1, (int)Math.Ceiling(json.Length / 4.0));
|
||||
}
|
||||
|
||||
private static Uri NormalizeEndpoint(Uri endpoint)
|
||||
internal static Uri NormalizeEndpoint(Uri endpoint)
|
||||
{
|
||||
var value = endpoint.ToString().TrimEnd('/');
|
||||
if (!value.EndsWith("/v1", StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
Reference in New Issue
Block a user