Browse Source

上传提示词和属性 提交

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
43494048ec
  1. 2
      lib/data/models/message_model.dart
  2. 8
      lib/data/services/ai_service.dart
  3. 6
      lib/data/services/deapsound_ai_service.dart
  4. 6
      lib/data/services/kouzi_ai_service.dart
  5. 10
      lib/data/services/open_ai_service_adapter.dart
  6. 6
      lib/data/services/volcano_ai_service.dart
  7. 1
      local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/OpenAIServicePlugin.kt
  8. 46
      local_plugins/open_ai_service/lib/open_ai_service.dart

2
lib/data/models/message_model.dart

@ -55,4 +55,4 @@ class Message {
isLoading: isLoading ?? this.isLoading,
);
}
}
}

8
lib/data/services/ai_service.dart

@ -1,16 +1,16 @@
/// AI回复服务接口
abstract class AiService {
/// 非流式输出方法
Future<String> sendMessage({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
});
/// 流式输出方法
Stream sendMessageStream({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
});
}

6
lib/data/services/deapsound_ai_service.dart

@ -17,7 +17,8 @@ class DeapsoundAIService implements AiService {
@override
Future<String> sendMessage({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async {
return '';
}
@ -25,7 +26,8 @@ class DeapsoundAIService implements AiService {
@override
Stream sendMessageStream({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async* {
final client = http.Client();
final url = Uri.parse('https://api.deapsound.com/ai/funcchat');

6
lib/data/services/kouzi_ai_service.dart

@ -13,7 +13,8 @@ class KouziAIService implements AiService {
@override
Future<String> sendMessage({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async {
return '';
}
@ -21,7 +22,8 @@ class KouziAIService implements AiService {
@override
Stream<String> sendMessageStream({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async* {
final client = http.Client();
final url = Uri.parse('https://api.coze.cn/v3/chat');

10
lib/data/services/open_ai_service_adapter.dart

@ -160,7 +160,8 @@ class OpenAIServiceAdapter implements AiService {
@override
Future<String> sendMessage({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async {
try {
// 在方法内直接转换
@ -170,6 +171,8 @@ class OpenAIServiceAdapter implements AiService {
// 发送消息并获取回复
final response = await _openAIService.sendMessage(
messages: convertedMessages,
systemPrompt: systemPrompt,
userProperties: userProperties,
);
return response;
@ -183,7 +186,8 @@ class OpenAIServiceAdapter implements AiService {
@override
Stream sendMessageStream({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt, //提示词
String? userProperties, //用户属性
}) async* {
try {
// 在方法内直接转换
@ -231,6 +235,8 @@ class OpenAIServiceAdapter implements AiService {
try {
started = await _openAIService.sendMessageStream(
messages: convertedMessages,
systemPrompt: systemPrompt,
userProperties: userProperties,
);
} catch (e) {
printError(info: '启动消息流失败: $e');

6
lib/data/services/volcano_ai_service.dart

@ -35,7 +35,8 @@ class VolcanoAIService implements AiService {
@override
Future<String> sendMessage({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async {
final url = Uri.parse('$_baseUrl$_chatEndpoint');
@ -84,7 +85,8 @@ class VolcanoAIService implements AiService {
@override
Stream<String> sendMessageStream({
required List<Map<String, String>> messages,
required String systemPrompt,
String? systemPrompt,
String? userProperties,
}) async* {
final url = Uri.parse('$_baseUrl$_chatEndpoint');

1
local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/OpenAIServicePlugin.kt

@ -126,7 +126,6 @@ class OpenAIServicePlugin : FlutterPlugin, MethodCallHandler, StreamHandler {
"sendMessageStream" -> {
val messagesRaw = call.argument<List<Map<String, Any>>>("messages") ?: emptyList()
// 检查事件接收器
if (eventSink == null) {
result.error("NO_EVENT_SINK", "没有可用的事件流接收器", null)

46
local_plugins/open_ai_service/lib/open_ai_service.dart

@ -195,12 +195,33 @@ class OpenAIService {
/// [messages] 消息列表
Future<String> sendMessage({
required List<Map<String, dynamic>> messages,
String? systemPrompt, //提示词
String? userProperties, //用户属性
}) async {
try {
// 构建新的消息列表
final List<Map<String, dynamic>> updatedMessages = [];
// 如果有提示词,先添加 system role
if (systemPrompt != null && systemPrompt.isNotEmpty) {
updatedMessages.add({
'role': 'system',
'content': systemPrompt,
});
}
// 如果有用户属性,可以作为 user 的一个“隐式指令”传进去
if (userProperties != null && userProperties.isNotEmpty) {
updatedMessages.add({
'role': 'user',
'content': '【用户属性】$userProperties',
});
}
// 添加原始消息
updatedMessages.addAll(messages);
final result = await _channel.invokeMethod<String>(
'sendMessage',
{
'messages': messages,
'messages': updatedMessages,
},
);
@ -221,12 +242,33 @@ class OpenAIService {
/// 返回一个布尔值,表示请求是否已开始
Future<bool> sendMessageStream({
required List<Map<String, dynamic>> messages,
String? systemPrompt, //提示词
String? userProperties, //用户属性
}) async {
try {
// 构建新的消息列表
final List<Map<String, dynamic>> updatedMessages = [];
// 如果有提示词,先添加 system role
if (systemPrompt != null && systemPrompt.isNotEmpty) {
updatedMessages.add({
'role': 'system',
'content': systemPrompt,
});
}
// 如果有用户属性,可以作为 user 的一个“隐式指令”传进去
if (userProperties != null && userProperties.isNotEmpty) {
updatedMessages.add({
'role': 'user',
'content': '【用户属性】$userProperties',
});
}
// 添加原始消息
updatedMessages.addAll(messages);
final result = await _channel.invokeMethod<bool>(
'sendMessageStream',
{
'messages': messages,
'messages': updatedMessages,
},
);

Loading…
Cancel
Save