fix: VLM识别修复 - 去System Message + 低温 + 精简提示词

This commit is contained in:
MingNian
2026-06-04 15:02:12 +08:00
parent 0e0e8ce72b
commit c44917b8e9
4 changed files with 18 additions and 17 deletions

View File

@@ -104,27 +104,23 @@ public sealed class VisionClient(HttpClient http, IConfiguration config)
int maxTokens = 2048,
CancellationToken ct = default)
{
var messages = new List<ChatMessage>();
if (!string.IsNullOrEmpty(systemPrompt))
messages.Add(new ChatMessage { Role = "system", Content = systemPrompt });
var contentParts = new List<object>();
foreach (var url in imageUrls)
contentParts.Add(new { type = "image_url", image_url = new { url } });
if (!string.IsNullOrEmpty(systemPrompt))
contentParts.Add(new { type = "text", text = systemPrompt });
if (!string.IsNullOrEmpty(userText))
contentParts.Add(new { type = "text", text = userText });
var userMessage = new ChatMessage
var messages = new List<ChatMessage>
{
Role = "user",
Content = JsonSerializer.Serialize(contentParts, _jsonOptions)
new() { Role = "user", Content = JsonSerializer.Serialize(contentParts, _jsonOptions) }
};
messages.Add(userMessage);
var request = new ChatCompletionRequest
{
Model = _model, Messages = messages, MaxTokens = maxTokens, Stream = false,
Temperature = 0.7f, TopP = 0.8f,
Temperature = 0.1f, VlHighResolutionImages = true,
};
var json = JsonSerializer.Serialize(request, _jsonOptions);
@@ -136,7 +132,6 @@ public sealed class VisionClient(HttpClient http, IConfiguration config)
throw new HttpRequestException($"VLM API {response.StatusCode}: {errorBody}");
}
var body = await response.Content.ReadAsStringAsync(ct);
Console.WriteLine($"[VLM RAW] Model={_model}, BodyLen={body.Length}, Body={body[..Math.Min(body.Length, 500)]}");
return JsonSerializer.Deserialize<ChatCompletionResponse>(body, _jsonOptions)!;
}
}

View File

@@ -167,6 +167,8 @@ public sealed class ChatCompletionRequest
public float? TopP { get; set; }
public List<ToolDefinition>? Tools { get; set; }
public string? ToolChoice { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("vl_high_resolution_images")]
public bool VlHighResolutionImages { get; set; }
}
public sealed class ChatMessage