Create and use an enum for AIRole in Scribe

This commit is contained in:
Théo Poizat
2026-02-23 15:33:04 +01:00
committed by Dat H. Pham
parent b84b2ce703
commit 71901b2640
4 changed files with 36 additions and 32 deletions
@@ -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));
}