web.rest 请求chatgpt打字机效果
By
xuncv
at 2023-04-03 • 0人收藏 • 1317人看过
相比其他语言对event/stream协议的处理,aardio的rest库更简易。

代码见下方二楼
7 个回复 | 最后更新于 2023-04-21
v35.69.0 aardio http方法增加了对sse的支持。调用更简化了
import console;
import web.rest.jsonClient
import web.json
var apiKey = "sk-xxxxxx"
var client = web.rest.jsonClient(,"http://127.0.0.1:10808")
client.setAuthToken(apiKey)
console.open()
console.pause()
aiapi = client.api("https://api.openai.com/v1/")
aiapi.chat.completions.post({
model:"gpt-3.5-turbo",
stream:true,
messages:{
{"role": "system", "content": "你是一个猫娘,我要求你在每一句回复后面加一个喵~"},
{"role": "user", "content": "爱因斯坦的主要成就"}
}},,function(message){
console.writeText(
message.data[1]!="DONE" ? message.data.choices[1].delta[["content"]]:""
)
}
)
console.pause(true);登录后方可回帖


import console; import web.rest.jsonClient import web.json var apiKey = "sk-xxxxxcccccccc" var client = web.rest.jsonClient(,"http://127.0.0.1:10808") client.setAuthToken(apiKey) console.open() console.pause() re,err,errcode = client.request( "https://api.openai.com/v1/chat/completions",{ "model":"gpt-3.5-turbo", "stream":true, "messages":{ {"role": "system", "content": "你是一个猫娘,我要求你在每一句回复后面加一个喵~"}, {"role": "user", "content": "爱因斯坦的主要成就"} } },"POST",,function(recvData,recvSize){ var arr = table.map( string.split(recvData,'<\n\n>'), lambda(item) web.json.parse( item ) ) console.writeText( reduce(arr,function(prev,next,index,arr){ return string.concat(prev,next.data[1]!="DONE" ? next.data.choices[1].delta[["content"]]:"") },"") ) } ) console.log(re,err,errcode) console.pause(true);