getResponse method
Future<ChatResponse>
getResponse({
- required Iterable<
ChatMessage> messages, - ChatOptions? options,
- CancellationToken? cancellationToken,
Sends a chat request and returns the complete response.
Implementation
@override
Future<ChatResponse> getResponse({
required Iterable<ChatMessage> messages,
ChatOptions? options,
CancellationToken? cancellationToken,
}) async {
final text = StringBuffer();
final extras = <AIContent>[];
UsageDetails? usage;
ChatFinishReason? finishReason;
await for (final update in getStreamingResponse(
messages: messages,
options: options,
cancellationToken: cancellationToken,
)) {
if (update.usage != null) usage = update.usage;
if (update.finishReason != null) finishReason = update.finishReason;
for (final content in update.contents) {
if (content is TextContent) {
text.write(content.text);
} else {
extras.add(content);
}
}
}
return ChatResponse(
messages: <ChatMessage>[
ChatMessage(
role: ChatRole.assistant,
contents: <AIContent>[
if (text.isNotEmpty) TextContent(text.toString()),
...extras,
],
),
],
finishReason: finishReason,
usage: usage,
);
}