Skip to content

Commit b14b59d

Browse files
author
git
committed
$feat: optimized for ai
1 parent 5a1aa3b commit b14b59d

File tree

26 files changed

+458
-271
lines changed

26 files changed

+458
-271
lines changed

module/AigcBase/Admin/Controller/AigcChatController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public function index($type)
2222
{
2323
Response::textEventStreamed(function ($sendCallback, $param = []) use ($type) {
2424
$input = InputPackage::buildFromInput();
25+
$systemPrompt = $input->getTrimString('systemPrompt');
2526
$prompt = $input->getTrimString('prompt');
2627
$driver = null;
2728
switch ($type) {
@@ -38,6 +39,7 @@ public function index($type)
3839
BizException::throws('机器人没有配置');
3940
} else {
4041
$option = [];
42+
$option['systemPrompt'] = $systemPrompt;
4143
$ret = $provider->chatStream(function ($payload, $param) use (&$sendCallback, &$send) {
4244
call_user_func($sendCallback, $payload['type'], isset($payload['data']) ? $payload['data'] : null);
4345
}, 'Admin_' . SessionUtil::id(), [

module/AigcBase/Docs/release.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 1.4.5 新增支持 systemPrompt 配置,支持系统级提示词设置
2+
3+
- 新增:支持 systemPrompt 配置,支持系统级提示词设置
4+
5+
---
6+
17
## 1.4.4 AI平台对接模型测试失效问题
28

39
- 修复:AI平台对接模型测试失效问题

module/AigcBase/Provider/AbstractAigcChatProvider.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ protected function chatPrepare($sessionId, $msg, $option)
7676
];
7777
}
7878
$option = array_merge([
79+
// 系统提示词
80+
'systemPrompt' => null,
7981
// 是否是 Markdown 返回,默认为 false
8082
'markdown' => false,
8183
], $option);;
@@ -90,10 +92,25 @@ protected function chatPrepare($sessionId, $msg, $option)
9092
* @param $sessionId string 会话ID
9193
* @param $msg string|array 消息
9294
* @param $option
93-
* @return mixed
95+
* @example
96+
* $option = [
97+
* 'systemPrompt' => 'You are a helpful assistant.',
98+
* ]
9499
*/
95100
abstract function chat($sessionId, $msg, $option = []);
96101

102+
/**
103+
* @param $streamCallback
104+
* @param $sessionId
105+
* @param $msg
106+
* @param $option
107+
* @return void
108+
* @throws BizException
109+
* @example
110+
* $option = [
111+
* 'systemPrompt' => 'You are a helpful assistant.',
112+
* ]
113+
*/
97114
public function chatStream($streamCallback, $sessionId, $msg, $option = [])
98115
{
99116
BizException::throws('未实现方法 AbstractAigcChatProvider.chatStream');

module/AigcBase/config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@
3232
"AigcChatXunfei",
3333
"AigcChatZhipuAi"
3434
],
35-
"version": "1.4.4",
35+
"version": "1.4.5",
3636
"modstartVersion": ">=4.1.0",
3737
"author": "ModStart",
3838
"description": "提供AI基础框架包,支持各种模型接入",
3939
"providers": [],
4040
"config": []
41-
}
41+
}

public/asset/common/editor.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/asset/common/photoswipe.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/asset/common/share.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 79 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
22
<html>
3+
34
<head>
45
<title></title>
5-
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
6+
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
67
<link rel="stylesheet" href="./../../themes/default/dialog.css?68f27b8d">
78
<script type="text/javascript" src="../internal.js?df5a6b9e"></script>
89
<style type="text/css">
@@ -19,13 +20,14 @@
1920
position: relative;
2021
font-size: 13px;
2122
}
22-
.wrapper .input::placeholder{
23-
color:#999;
23+
24+
.wrapper .input::placeholder {
25+
color: #999;
2426
}
2527

2628
.ai-operate {
2729
display: block;
28-
min-width: 8em;
30+
min-width: 9em;
2931
text-align: center;
3032
text-decoration: none;
3133
line-height: 30px;
@@ -49,90 +51,90 @@
4951
}
5052
</style>
5153
</head>
54+
5255
<body>
53-
<div class="wrapper" id="app" v-cloak>
56+
<div class="wrapper" id="app" v-cloak>
5457

55-
<div>
56-
<div v-if="selectText"
57-
style="line-height:30px;padding:0 10px;border-radius:5px;margin-bottom:10px;display:inline-flex;align-items:center;">
58-
<div style="margin-right:5px;">
59-
<i class="edui-iconfont edui-icon-outline" style="font-size:18px;"></i>
60-
</div>
61-
<div style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:550px;">
62-
{{ selectText }}
63-
</div>
64-
</div>
65-
<div class="flex" style="padding: 5px; border-radius: 30px; box-shadow: 0 0 10px #CCC;">
66-
<div class="flex-grow">
67-
<input type="text" v-model="inputText"
68-
class="input"
69-
style="width:540px;border-color:transparent;font-size:14px;"
70-
placeholder="告诉 AI 下一步应该如何?比如:帮我翻译成英语"/>
71-
</div>
72-
<div class="flex-shrink-0" style="width:32px;padding-right:5px;">
73-
<a href="javascript:;" class="btn primary"
74-
@click="doSubmit"
75-
style="width:30px;text-align:center;padding:0;border-radius:50%;">
76-
<i v-if="loading" class="edui-iconfont edui-icon-refresh"
77-
style="display:inline-block;animation:spin 2s linear infinite;"></i>
78-
<i v-else class="edui-iconfont edui-icon-right-direction"></i>
79-
</a>
80-
</div>
81-
</div>
82-
<div v-if="resultHtml || resultError"
83-
style="border-top:1px solid #F2F2F2;margin-top:10px;padding-top:10px;">
84-
<div v-if="resultError"
85-
style="color:red;background:rgba(255,0,0,0.1);margin-bottom:10px;padding:10px;border-radius:10px;">
86-
{{ resultError }}
58+
<div>
59+
<div v-if="selectText"
60+
style="line-height:30px;padding:0 10px;border-radius:5px;margin-bottom:10px;display:inline-flex;align-items:center;">
61+
<div style="margin-right:5px;">
62+
<i class="edui-iconfont edui-icon-outline" style="font-size:18px;"></i>
63+
</div>
64+
<div style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:550px;">
65+
{{ selectText }}
66+
</div>
8767
</div>
88-
<div class="flex flex-items-center" style="height:30px;">
68+
<div class="flex" style="padding: 5px; border-radius: 30px; box-shadow: 0 0 10px #CCC;">
8969
<div class="flex-grow">
90-
<i class="edui-iconfont edui-icon-robot" style="font-size:16px;"></i>
91-
以下为生成的结果
70+
<input type="text" v-model="inputText" class="input"
71+
style="width:540px;border-color:transparent;font-size:14px;"
72+
placeholder="告诉 AI 下一步应该如何?比如:帮我翻译成英语" />
9273
</div>
93-
<div>
94-
<a v-if="!loading" @click="doInsert" href="javascript:;" class="btn sm">
95-
<i class="edui-iconfont edui-icon-page-break"></i>
96-
插入
97-
</a>
98-
<a v-if="!loading&&selectText" @click="doReplace" href="javascript:;" class="btn sm">
99-
<i class="edui-iconfont edui-icon-eraser"></i>
100-
替换
74+
<div class="flex-shrink-0" style="width:32px;padding-right:5px;">
75+
<a href="javascript:;" class="btn primary" @click="doSubmitDirect"
76+
style="width:30px;text-align:center;padding:0;border-radius:50%;">
77+
<i v-if="loading" class="edui-iconfont edui-icon-refresh"
78+
style="display:inline-block;animation:spin 2s linear infinite;"></i>
79+
<i v-else class="edui-iconfont edui-icon-right-direction"></i>
10180
</a>
10281
</div>
10382
</div>
104-
<div
105-
style="margin-top:10px;background:rgba(0,0,0,0.03);padding:10px;border-radius:10px;overflow:auto;"
106-
:style="{height:resultHeight}"
107-
>
108-
<div class="ub-html" v-html="resultHtml"></div>
109-
</div>
110-
</div>
111-
<div v-else
112-
style="border-top:1px solid #F2F2F2;margin-top:10px;padding-top:10px;">
113-
<div v-if="functions.length" style="color:#999;">
114-
<i class="edui-iconfont edui-icon-bell" style="font-size:16px;"></i>
115-
提示:您可以在上面输入文字生成内容 或 选择下方的操作
116-
</div>
117-
<div v-else style="color:#999;">
118-
<i class="edui-iconfont edui-icon-bell" style="font-size:16px;"></i>
119-
提示:您可以在上面输入文字生成内容
83+
<div v-if="resultHtml || resultError"
84+
style="border-top:1px solid #F2F2F2;margin-top:10px;padding-top:10px;">
85+
<div v-if="resultError"
86+
style="color:red;background:rgba(255,0,0,0.1);margin-bottom:10px;padding:10px;border-radius:10px;">
87+
{{ resultError }}
88+
</div>
89+
<div class="flex flex-items-center" style="height:30px;">
90+
<div class="flex-grow">
91+
<i class="edui-iconfont edui-icon-robot" style="font-size:16px;"></i>
92+
以下为生成的结果
93+
</div>
94+
<div>
95+
<a v-if="!loading&&showInsert" @click="doInsert" href="javascript:;" class="btn sm">
96+
<i class="edui-iconfont edui-icon-page-break"></i>
97+
插入
98+
</a>
99+
<a v-if="!loading&&showReplace&&selectText" @click="doReplace" href="javascript:;"
100+
class="btn sm">
101+
<i class="edui-iconfont edui-icon-eraser"></i>
102+
替换
103+
</a>
104+
<a v-if="!loading&&showReplaceAll" @click="doReplaceAll" href="javascript:;" class="btn sm">
105+
<i class="edui-iconfont edui-icon-eraser"></i>
106+
替换内容
107+
</a>
108+
</div>
109+
</div>
110+
<div style="margin-top:10px;background:rgba(0,0,0,0.03);padding:10px;border-radius:10px;overflow:auto;"
111+
:style="{height:resultHeight}">
112+
<div class="ub-html" v-html="resultHtml"></div>
113+
</div>
120114
</div>
121-
<div style="padding-top:10px;display:flex;">
122-
<a href="javascript:;" v-for="f in functions"
123-
@click="doSubmitFunction(f)"
124-
class="ai-operate">
125-
<span v-html="f.text"></span>
126-
</a>
115+
<div v-else style="border-top:1px solid #F2F2F2;margin-top:10px;padding-top:10px;">
116+
<div v-if="functions.length" style="color:#999;">
117+
<i class="edui-iconfont edui-icon-bell" style="font-size:16px;"></i>
118+
提示:您可以在上面输入文字生成内容 或 选择下方的操作
119+
</div>
120+
<div v-else style="color:#999;">
121+
<i class="edui-iconfont edui-icon-bell" style="font-size:16px;"></i>
122+
提示:您可以在上面输入文字生成内容
123+
</div>
124+
<div style="padding-top:10px;display:flex;flex-wrap:wrap;">
125+
<a href="javascript:;" v-for="f in functions" @click="doSubmitFunction(f)" class="ai-operate">
126+
<span v-html="f.text"></span>
127+
</a>
128+
</div>
127129
</div>
128130
</div>
129-
</div>
130131

131-
</div>
132-
<script src="../../third-party/vue.js?1f65e021"></script>
133-
<script src="../../third-party/showdown.js?d5372104"></script>
134-
<script src="../../third-party/jquery-1.10.2.js?628072e7"></script>
135-
<script type="text/javascript" src="../../third-party/clipboard/clipboard.js?555edf0a"></script>
136-
<script type="text/javascript" src="./ai.js?eb799e7f"></script>
132+
</div>
133+
<script src="../../third-party/vue.js?1f65e021"></script>
134+
<script src="../../third-party/showdown.js?d5372104"></script>
135+
<script src="../../third-party/jquery-1.10.2.js?628072e7"></script>
136+
<script type="text/javascript" src="../../third-party/clipboard/clipboard.js?555edf0a"></script>
137+
<script type="text/javascript" src="./ai.js?70ba43d0"></script>
137138
</body>
139+
138140
</html>

0 commit comments

Comments
 (0)