2
2
3
3
namespace App \Http \Controllers ;
4
4
5
- use Illuminate \Http \Request ;
5
+ use App \Http \Requests \AiTeacherRequest ;
6
+ use Illuminate \Support \Facades \Validator ;
6
7
use TeaRiot \YandexGpt \Cloud ;
7
8
use TeaRiot \YandexGpt \Methods \Completion ;
8
9
@@ -25,12 +26,13 @@ public function index()
25
26
return view ('ai-teacher ' );
26
27
}
27
28
28
- public function send (Request $ request )
29
+ public function send (AiTeacherRequest $ request )
29
30
{
30
31
$ messages = $ request ->get ('messages ' );
31
32
32
33
if (! empty ($ messages ) and is_array ($ messages )) {
33
- $ completion = new Completion ();
34
+ $ completion = new Completion ;
35
+ $ completion ->setMaxTokens (2000 );
34
36
35
37
$ context = [
36
38
[
@@ -46,6 +48,17 @@ public function send(Request $request)
46
48
'text ' => $ message ['text ' ],
47
49
];
48
50
} else {
51
+ $ validator = Validator::make ($ message , [
52
+ 'text ' => 'required|max:2000 ' ,
53
+ ]);
54
+
55
+ if ($ validator ->fails ()) {
56
+ return response ()->json ([
57
+ 'code ' => 413 ,
58
+ 'message ' => 'Payload Too Large ' ,
59
+ ], 413 );
60
+ }
61
+
49
62
$ context [] = [
50
63
'role ' => $ completion ::USER ,
51
64
'text ' => $ message ['text ' ],
@@ -55,6 +68,7 @@ public function send(Request $request)
55
68
56
69
$ completion ->setModelUri ($ this ->folderId , 'yandexgpt-lite/latest ' )
57
70
->setTextMaxCount (21 )
71
+ ->setTextLength (20000 )
58
72
->addText ($ context );
59
73
60
74
$ result = $ this ->yandexGpt ->request ($ completion );
0 commit comments