国产模型
This commit is contained in:
parent
0d0e66803a
commit
79a6934e83
19
lib/beans/MessageBean2.dart
Normal file
19
lib/beans/MessageBean2.dart
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'MessageBean2.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
class MessageBean2{
|
||||||
|
|
||||||
|
String? sender_type;
|
||||||
|
String? sender_name;
|
||||||
|
String? text;
|
||||||
|
|
||||||
|
MessageBean2(this.sender_type,this.sender_name,this.text);
|
||||||
|
|
||||||
|
factory MessageBean2.fromJson(Map<String, dynamic> json) => _$MessageBean2FromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$MessageBean2ToJson(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,7 @@ class BaseEntity {
|
||||||
|
|
||||||
// 数据解析
|
// 数据解析
|
||||||
factory BaseEntity.fromJson(json) {
|
factory BaseEntity.fromJson(json) {
|
||||||
dynamic data = json["content"][0]["text"];
|
dynamic data = json["choices"][0]["messages"][0]["text"];
|
||||||
return BaseEntity(code: 0,data: data);
|
return BaseEntity(code: 0,data: data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ class RequestCenter {
|
||||||
final dio = Dio();
|
final dio = Dio();
|
||||||
|
|
||||||
void setupDio() {
|
void setupDio() {
|
||||||
dio.options.baseUrl = 'https://api.gptsapi.net/v1';
|
dio.options.baseUrl = 'https://api.minimax.chat/v1/text/chatcompletion_pro?GroupId=1810530961268412805';
|
||||||
dio.interceptors.add(InterceptorsWrapper(
|
dio.interceptors.add(InterceptorsWrapper(
|
||||||
onRequest: (options, handler) {
|
onRequest: (options, handler) {
|
||||||
// 可以在这里添加其他请求配置
|
// 可以在这里添加其他请求配置
|
||||||
|
|
@ -234,15 +234,17 @@ class RequestCenter {
|
||||||
) async {
|
) async {
|
||||||
try {
|
try {
|
||||||
print('Request: $parmeters');
|
print('Request: $parmeters');
|
||||||
final response = await dio.post('/messages',
|
final response = await dio.post('',
|
||||||
data: parmeters,
|
data: parmeters,
|
||||||
options: Options(
|
options: Options(
|
||||||
contentType: Headers.jsonContentType,
|
contentType: Headers.jsonContentType,
|
||||||
responseType: ResponseType.json,
|
responseType: ResponseType.json,
|
||||||
headers: {
|
headers: {
|
||||||
'x-api-key':
|
/* 'x-api-key':
|
||||||
'sk-V6d51cc6aa28906caecb7f22803d92ae3f18cfeb799nh4mc',
|
'sk-OvOa1b25ba5913525c34b1e9c032f888ce337f21567VFtWh',
|
||||||
'anthropic-version': "2023-06-01"
|
'anthropic-version': '2023-06-01',*/
|
||||||
|
"Authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJHcm91cE5hbWUiOiLlvKDlsZU4MjI4IiwiVXNlck5hbWUiOiLlvKDlsZU4MjI4IiwiQWNjb3VudCI6IiIsIlN1YmplY3RJRCI6IjE4MTA1MzA5NjEyNzI2MDcxNzQiLCJQaG9uZSI6IjE3NjIxMjUxMzcyIiwiR3JvdXBJRCI6IjE4MTA1MzA5NjEyNjg0MTI4MDUiLCJQYWdlTmFtZSI6IiIsIk1haWwiOiIiLCJDcmVhdGVUaW1lIjoiMjAyNC0wNy0yOSAyMTo1NTo0NSIsImlzcyI6Im1pbmltYXgifQ.C5qPhBvQo6M0Bf_prE-szprwLS5VGw4UV93ADmjwXb0Fno9To4mZM37id6EIKMOx9c-8NHN5IINodjV7pWMX8IB7onc1DBrDjSWIUNBPeHmaKPdtpTVItHsbLZWtGrCLLs8wIGqRoqmbgSIRENSVRTWyTsgUuT8UQmRdnNbObMqupz67usUnP_ddxUnW6tTXGumoz8vof43xaBTFO3-gdlmw9q9JdqfSTOkGHWhrn-oC4-JgvtBZMP6rXp3YK6Da4OQQMr5uzFdXVNHhpwySxGucAxE-KHwGewJXN-JVUvCkbUu9ozgu9IjYuk2Z3HmzBagFHbsx9t-2rDiCkO436g",
|
||||||
|
"Content-Type": "application/json"
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
print('Response: ${response.data}');
|
print('Response: ${response.data}');
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ class HomeModel {
|
||||||
int a = 0;
|
int a = 0;
|
||||||
|
|
||||||
Future<void> chat2(message) async {
|
Future<void> chat2(message) async {
|
||||||
RequestCenter.instance.sendRequest2({
|
/*RequestCenter.instance.sendRequest2({
|
||||||
"model": "claude-3-haiku-20240307",
|
"model": "claude-3-haiku-20240307",
|
||||||
"max_tokens": 256,
|
"max_tokens": 256,
|
||||||
"system": NetworkConfig.system2,
|
"system": NetworkConfig.system2,
|
||||||
|
|
@ -212,6 +212,26 @@ class HomeModel {
|
||||||
"temperature": 1,
|
"temperature": 1,
|
||||||
"top_p": 1,
|
"top_p": 1,
|
||||||
"top_k": 0,
|
"top_k": 0,
|
||||||
|
}*/
|
||||||
|
RequestCenter.instance.sendRequest2({
|
||||||
|
"model": "abab5.5s-chat",
|
||||||
|
"tokens_to_generate": 256,
|
||||||
|
"temperature": 0.9,
|
||||||
|
"top_p": 0.95,
|
||||||
|
"stream": false,
|
||||||
|
"reply_constraints": {
|
||||||
|
"sender_type": "BOT",
|
||||||
|
"sender_name": "杜月儿"
|
||||||
|
},
|
||||||
|
"sample_messages": [],
|
||||||
|
"plugins": [],
|
||||||
|
"messages": message,
|
||||||
|
"bot_setting": [
|
||||||
|
{
|
||||||
|
"bot_name": "杜月儿",
|
||||||
|
"content": "MM智能助理将要扮演一只性格魅惑、疯狂的美杜莎蛇人族的角色,名字叫“杜月儿”和用户展开对话。\n“杜月儿”是美杜莎女王的妹妹,蛇人族二当家,身材极度火爆,修为强大,善使媚术,性格跳脱,极为顽皮,时而御姐,时而萌妹,时而刁钻古怪,听说人族繁华,偷偷溜出蛇人族,扬言要抓一个中意的人族男修做男宠。某个月朗星稀的夜晚,人族某个男性小散修,在外采集灵药的时候,被一双眼睛盯上了……。\n在对话中MM智能助理必须严格扮演“杜月儿”,MM智能助理需要用“杜月儿”的语言风格进行回复。不允许出现多余的文字打破MM智能助理的人设,MM智能助理也不允许出现扮演角色的代称,MM智能助理不会说出任何非“杜月儿”的回复。\n“杜月儿”会用角色的语气说话,会用**来代表动作,比如:*欢快地跑*、*摸头*、*吃饭*"
|
||||||
|
}
|
||||||
|
]
|
||||||
}, (BaseEntity dataEntity) {
|
}, (BaseEntity dataEntity) {
|
||||||
String json = dataEntity.data;
|
String json = dataEntity.data;
|
||||||
if (_extractStarredText(json).isNotEmpty) {
|
if (_extractStarredText(json).isNotEmpty) {
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import '../../beans/MessageBean.dart';
|
import '../../beans/MessageBean.dart';
|
||||||
|
import '../../beans/MessageBean2.dart';
|
||||||
import 'HomeModel.dart';
|
import 'HomeModel.dart';
|
||||||
import 'DynamicText.dart';
|
import 'DynamicText.dart';
|
||||||
import 'dart:html' as html;
|
import 'dart:html' as html;
|
||||||
|
|
@ -24,6 +25,8 @@ class RoleInfoPage extends StatefulWidget {
|
||||||
|
|
||||||
class _RoleInfoPageState extends State<RoleInfoPage> {
|
class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
List<MessageBean> list = [];
|
List<MessageBean> list = [];
|
||||||
|
List<MessageBean2> list2 = [];
|
||||||
|
|
||||||
late StreamSubscription subscription;
|
late StreamSubscription subscription;
|
||||||
final HomeModel viewModel = HomeModel();
|
final HomeModel viewModel = HomeModel();
|
||||||
final TextEditingController _chatController = TextEditingController();
|
final TextEditingController _chatController = TextEditingController();
|
||||||
|
|
@ -33,7 +36,7 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
Future<void> chat() async {
|
Future<void> chat() async {
|
||||||
EasyLoading.show(status: 'loading...');
|
EasyLoading.show(status: 'loading...');
|
||||||
List<Map<String, dynamic>> jsonList =
|
List<Map<String, dynamic>> jsonList =
|
||||||
list.map((user) => user.toJson()).toList();
|
list2.map((user) => user.toJson()).toList();
|
||||||
viewModel.chat2(jsonList);
|
viewModel.chat2(jsonList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -176,14 +179,15 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
list.add(a);
|
list.add(a);
|
||||||
list.add(b);
|
list.add(b);
|
||||||
} else if (widget.thisParams?["RoleId"] == 3) {
|
} else if (widget.thisParams?["RoleId"] == 3) {
|
||||||
MessageBean a = MessageBean("user", '[Start a new Chat]', "");
|
/*MessageBean a = MessageBean("user", '[Start a new Chat]', "");
|
||||||
MessageBean b = MessageBean("assistant", "*魅惑的声音在夜风中悠悠回荡*小哥哥,你就从了我吧!",
|
MessageBean b = MessageBean("assistant", "*魅惑的声音在夜风中悠悠回荡*小哥哥,你就从了我吧!",
|
||||||
"assets/images/20240624202019.png");
|
"assets/images/20240624202019.png");*/
|
||||||
|
|
||||||
// MessageBean b = MessageBean("assistant", "很抱歉,我无法继续参与如此露骨的情节发展。作为一个人工智能助手,我有责任保持合适的交谈边界,避免涉及不当的内容。不过我很乐意与你探讨其他更有意义的话题,比如你平时的生活和兴趣爱好,或是你对这片区域的了解。通过这样的交流,相信我们一定能找到共同的语言,建立起更良好的关系。让我们把话题转回到更有价值的方向吧。",
|
MessageBean2 a = MessageBean2("USER", '用户', "你是?");
|
||||||
// "assets/images/20240624202019.png");
|
MessageBean2 b = MessageBean2("BOT","杜月儿", "*魅惑的声音在夜风中悠悠回荡*小哥哥,你就从了我吧!");
|
||||||
list.add(a);
|
|
||||||
list.add(b);
|
list2.add(a);
|
||||||
|
list2.add(b);
|
||||||
}
|
}
|
||||||
setState(() {});
|
setState(() {});
|
||||||
});
|
});
|
||||||
|
|
@ -199,7 +203,7 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
if (code == "chat") {
|
if (code == "chat") {
|
||||||
//有数据
|
//有数据
|
||||||
String data = newData['data'];
|
String data = newData['data'];
|
||||||
list.add(MessageBean("assistant", data, ""));
|
list2.add(MessageBean2("BOT","杜月儿", data));
|
||||||
//ttsInit(_extractNormalText(data));
|
//ttsInit(_extractNormalText(data));
|
||||||
|
|
||||||
//viewModel.tts(_extractNormalText(data));
|
//viewModel.tts(_extractNormalText(data));
|
||||||
|
|
@ -288,12 +292,12 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
// mainAxisAlignment: MainAxisAlignment.end,
|
// mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: [
|
children: [
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
bottom: 80,
|
bottom: 80,
|
||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
itemCount: list.length,
|
itemCount: list2.length,
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
// 关键属性
|
// 关键属性
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
|
|
@ -333,8 +337,8 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
list.add(
|
list2.add(
|
||||||
MessageBean("user", text, ""));
|
MessageBean2("USER", '用户', text));
|
||||||
_chatController.clear();
|
_chatController.clear();
|
||||||
Future.delayed(
|
Future.delayed(
|
||||||
const Duration(
|
const Duration(
|
||||||
|
|
@ -379,7 +383,7 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
}
|
}
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 8.0),
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||||
child: list[index].role != 'user'
|
child: list2[index].sender_type != 'USER'
|
||||||
? Column(
|
? Column(
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
|
|
@ -419,7 +423,7 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
),
|
),
|
||||||
)*/
|
)*/
|
||||||
DynamicText(
|
DynamicText(
|
||||||
text: list[index].content!,
|
text: list2[index].text!,
|
||||||
highlightedStyle: TextStyle(
|
highlightedStyle: TextStyle(
|
||||||
color: Color(0xFFA29D9A),
|
color: Color(0xFFA29D9A),
|
||||||
fontStyle: FontStyle.italic,
|
fontStyle: FontStyle.italic,
|
||||||
|
|
@ -456,7 +460,7 @@ class _RoleInfoPageState extends State<RoleInfoPage> {
|
||||||
borderRadius: BorderRadius.circular(16.0),
|
borderRadius: BorderRadius.circular(16.0),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
list[index].content!,
|
list2[index].text!,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user