Create and use an enum for AIRole in Scribe
This commit is contained in:
@@ -2,12 +2,16 @@ import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'ai_message.g.dart';
|
||||
|
||||
enum AIRole {
|
||||
@JsonValue('user')
|
||||
user,
|
||||
@JsonValue('system')
|
||||
system,
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class AIMessage {
|
||||
static const String aiUserRole = 'user';
|
||||
static const String aiSystemRole = 'system';
|
||||
|
||||
final String role;
|
||||
final AIRole role;
|
||||
final String content;
|
||||
|
||||
const AIMessage({
|
||||
@@ -21,12 +25,12 @@ class AIMessage {
|
||||
Map<String, dynamic> toJson() => _$AIMessageToJson(this);
|
||||
|
||||
factory AIMessage.ofUser(String content) => AIMessage(
|
||||
role: aiUserRole,
|
||||
role: AIRole.user,
|
||||
content: content,
|
||||
);
|
||||
|
||||
factory AIMessage.ofSystem(String content) => AIMessage(
|
||||
role: aiSystemRole,
|
||||
role: AIRole.system,
|
||||
content: content,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ class Prompt {
|
||||
List<AIMessage> buildPrompt(String inputText, {String? task}) {
|
||||
final messages = <AIMessage>[];
|
||||
for (final message in this.messages) {
|
||||
if (message.role == 'system') {
|
||||
if (message.role == AIRole.system) {
|
||||
messages.add(AIMessage.ofSystem(message.content));
|
||||
} else if (message.role == 'user') {
|
||||
} else if (message.role == AIRole.user) {
|
||||
final userContent = _replacePlaceholders(message.content, inputText, task);
|
||||
messages.add(AIMessage.ofUser(userContent));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user