Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
open_ai_api
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haojie
open_ai_api
Commits
e1ac83ab
Commit
e1ac83ab
authored
Apr 12, 2023
by
haojie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
a25ac6f6
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
2 deletions
+21
-2
app/Client/OpenAI.php
+1
-0
app/Http/Controllers/Api/GPT/ChatController.php
+20
-2
No files found.
app/Client/OpenAI.php
View file @
e1ac83ab
...
...
@@ -2,6 +2,7 @@
namespace
App\Client
;
use
Illuminate\Support\Facades\Log
;
use
Orhanerday\OpenAi\OpenAi
as
BaseOpenAi
;
class
OpenAI
extends
BaseOpenAi
...
...
app/Http/Controllers/Api/GPT/ChatController.php
View file @
e1ac83ab
...
...
@@ -103,7 +103,6 @@ public function translate(Request $request): JsonResponse
*/
public
function
stream
(
Request
$request
)
{
// Validate if the request is legitimate.
if
(
$request
->
session
()
->
get
(
'chat_id'
)
!=
$request
->
input
(
'chat_id'
))
{
throw
new
UserException
(
1
,
'error'
);
}
...
...
@@ -118,6 +117,7 @@ public function stream(Request $request)
// Real-time streaming response data sent to the client
$respData
=
''
;
$apiKey
=
config
(
'openai.api_key'
);
# 返回EventStream响应头
header
(
'Access-Control-Allow-Origin: *'
);
header
(
'Content-type: text/event-stream'
);
header
(
'Cache-Control: no-cache'
);
...
...
@@ -132,7 +132,7 @@ public function stream(Request $request)
}
}
else
{
$respData
.=
$data
;
echo
$data
;
;
echo
$data
;
}
ob_flush
();
flush
();
...
...
@@ -155,6 +155,24 @@ public function stream(Request $request)
}
$messages
[]
=
[
'role'
=>
'assistant'
,
'content'
=>
$respText
];
$request
->
session
()
->
put
(
'messages'
,
$messages
);
}
else
{
# 空返回时--格式化event-stream
$lines
=
explode
(
"
\n\n
"
,
$respData
);
$respText
=
''
;
foreach
(
$lines
as
$line
)
{
$data
=
substr
(
$line
,
5
);
// The structure of each line of data is data: {...}.
if
(
$data
===
'[DONE]'
)
{
break
;
}
else
{
$segment
=
json_decode
(
$data
);
if
(
isset
(
$segment
->
choices
[
0
]
->
delta
->
content
))
{
$respText
.=
$segment
->
choices
[
0
]
->
delta
->
content
;
}
}
}
$messages
[]
=
[
'role'
=>
'assistant'
,
'content'
=>
$respText
];
Log
::
info
(
$messages
);
$request
->
session
()
->
put
(
'messages'
,
$messages
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment