Add AI batch reconciliation for accessibility bills
This commit is contained in:
@@ -5,10 +5,13 @@ public interface ILlmClient
|
||||
bool IsEnabled { get; }
|
||||
Task<IntentResult?> TryParseIntentAsync(string userText, CancellationToken ct = default);
|
||||
Task<string?> TryGenerateReplyAsync(string systemPrompt, string userText, CancellationToken ct = default);
|
||||
Task<IReadOnlyList<ImageParseResult>?> AnalyzeImageAsync(
|
||||
byte[] imageBytes,
|
||||
string mimeType,
|
||||
CancellationToken ct = default);
|
||||
Task<IReadOnlyList<ImageParseResult>?> AnalyzeImageAsync(
|
||||
byte[] imageBytes,
|
||||
string mimeType,
|
||||
CancellationToken ct = default);
|
||||
Task<IReadOnlyList<RecognitionBatchModelAction>?> ReconcileRecognitionBatchAsync(
|
||||
RecognitionBatchModelInput input,
|
||||
CancellationToken ct = default);
|
||||
Task<(bool Ok, string? Error)> TestConnectionAsync(CancellationToken ct = default);
|
||||
|
||||
Task<AgentRunResponse> RunAgentAsync(
|
||||
@@ -42,13 +45,57 @@ public record AgentRunResponse(
|
||||
string Text,
|
||||
int ToolCallCount);
|
||||
|
||||
public record ImageParseResult(
|
||||
public record ImageParseResult(
|
||||
string Type,
|
||||
decimal Amount,
|
||||
string CategoryName,
|
||||
string? PaymentMethod,
|
||||
string Note,
|
||||
DateTime? OccurredAt);
|
||||
DateTime? OccurredAt);
|
||||
|
||||
public record RecognitionBatchModelCandidate(
|
||||
string CandidateId,
|
||||
string? FlowSessionId,
|
||||
string PackageName,
|
||||
string Type,
|
||||
decimal Amount,
|
||||
string? Merchant,
|
||||
string? OrderId,
|
||||
DateTime OccurredAt,
|
||||
string RecognitionKind,
|
||||
string? CategoryHint,
|
||||
string Confidence,
|
||||
IReadOnlyList<string> EvidenceIds);
|
||||
|
||||
public record RecognitionBatchModelEvidence(
|
||||
string EvidenceId,
|
||||
string? CandidateId,
|
||||
string? FlowSessionId,
|
||||
string PackageName,
|
||||
DateTime CapturedAt,
|
||||
byte[] ImageBytes,
|
||||
string MimeType);
|
||||
|
||||
public record RecognitionBatchModelInput(
|
||||
string BatchId,
|
||||
IReadOnlyList<RecognitionBatchModelCandidate> Candidates,
|
||||
IReadOnlyList<RecognitionBatchModelEvidence> Evidence,
|
||||
IReadOnlyList<string> ExpenseCategories,
|
||||
IReadOnlyList<string> IncomeCategories);
|
||||
|
||||
public record RecognitionBatchModelAction(
|
||||
string Action,
|
||||
string ActionId,
|
||||
string? CandidateId,
|
||||
string? EvidenceId,
|
||||
string? Type,
|
||||
decimal? Amount,
|
||||
string? CategoryName,
|
||||
string? PaymentMethod,
|
||||
string? Note,
|
||||
DateTime? OccurredAt,
|
||||
double Confidence,
|
||||
string Reason);
|
||||
|
||||
public class NullLlmClient : ILlmClient
|
||||
{
|
||||
@@ -65,11 +112,16 @@ public class NullLlmClient : ILlmClient
|
||||
CancellationToken ct = default) =>
|
||||
Task.FromResult<string?>(null);
|
||||
|
||||
public Task<IReadOnlyList<ImageParseResult>?> AnalyzeImageAsync(
|
||||
public Task<IReadOnlyList<ImageParseResult>?> AnalyzeImageAsync(
|
||||
byte[] imageBytes,
|
||||
string mimeType,
|
||||
CancellationToken ct = default) =>
|
||||
Task.FromResult<IReadOnlyList<ImageParseResult>?>(null);
|
||||
Task.FromResult<IReadOnlyList<ImageParseResult>?>(null);
|
||||
|
||||
public Task<IReadOnlyList<RecognitionBatchModelAction>?> ReconcileRecognitionBatchAsync(
|
||||
RecognitionBatchModelInput input,
|
||||
CancellationToken ct = default) =>
|
||||
Task.FromResult<IReadOnlyList<RecognitionBatchModelAction>?>(null);
|
||||
|
||||
public Task<(bool Ok, string? Error)> TestConnectionAsync(
|
||||
CancellationToken ct = default) =>
|
||||
|
||||
Reference in New Issue
Block a user