OPEN AI 极速开发平台

开放OPEN AI 平台接口文档


实时对话

<p>[TOC]</p> <h5>简要描述</h5> <ul> <li>基于websocket实时返回对话内容,生产环境建议使用</li> <li>接口自动支持内容过滤,后台开启后</li> </ul> <h5>请求URL</h5> <ul> <li><code>ws://api-openai.dtgarden.com/ws/question/1</code></li> </ul> <h5>请求方式</h5> <ul> <li>websocket协议</li> </ul> <h5>参数</h5> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">必选</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">roleCode</td> <td style="text-align: left;">否</td> <td>string</td> <td>对应后台细分领域对话角色模型编码 默认gpt</td> </tr> <tr> <td style="text-align: left;">continuousDialogue</td> <td style="text-align: left;">否</td> <td>int</td> <td>开启连续对话 1开启 0不开启默认1开启 上下文限制由开发者后台账号接口配配置更改</td> </tr> <tr> <td style="text-align: left;">model</td> <td style="text-align: left;">否</td> <td>string</td> <td>对话模型 1gpt3.5 2gtp4 3gpt432k 4gpt-plus 默认gpt3.5 官方gpt4 请使用模型4 接口模型参数大于后台开发者后台模型配置未来支持更多其他模型 如百度,阿里等</td> </tr> <tr> <td style="text-align: left;">replyId</td> <td style="text-align: left;">是</td> <td>string</td> <td>url路径参数 聊天会话ID 不重复,每一个用户创建新的对话生成新的uuid 对应新的上下文 根据开发者账号回话ID加角色 保存回话上下文</td> </tr> <tr> <td style="text-align: left;">identification</td> <td style="text-align: left;">否</td> <td>string</td> <td>接口服务ID 不同模型对应后台不同接口服务ID。不填写会走账号下key</td> </tr> </tbody> </table> <p>websocket 与客户端保持长连接解决方案 使用心跳模式 固定消息格式<strong>ping</strong>视为心跳数据</p> <p>示例代码</p> <pre><code class="language-javascript">//接收到消息的回调方法 ws.onmessage = function (event) { // 心跳机制保存连接 if (event.data === 'ping') { ws.send('pong'); } else if (event.data === 'pong') { clearTimeout(timerId); timerId = setTimeout(function() { ws.send('ping'); }, 5000); }else{ analysisMsg(event) } };</code></pre> <p>完整websocket代码示例</p> <pre><code class="language-javascript">//授权 if(token==null){ getToken(); } params = { appId, token, model, roloeCode, continuousDialogue }; let wsUrl=wsApi+'/ws/question/'+replyId+'?'+buildUrlParams(params) console.log(wsUrl) ws = new WebSocket(wsUrl); let timerId; //连接成功建立的回调方法 ws.onopen = function () { console.log('WebSocket 连接已打开'); $(&amp;quot;#chatStatus span&amp;quot;).text(&amp;quot;在线&amp;quot;) timerId = setTimeout(function() { ws.send('ping'); }, 5000); }; //接收到消息的回调方法 ws.onmessage = function (event) { // 心跳机制保存连接 if (event.data === 'ping') { ws.send('pong'); } else if (event.data === 'pong') { console.log(&amp;quot;💓&amp;quot;) clearTimeout(timerId); timerId = setTimeout(function() { ws.send('ping'); }, 5000); }else{ analysisMsg(event) } }; //连接关闭的回调方法 ws.onclose = function () { console.log('WebSocket 连接已关闭'); $(&amp;quot;#chatStatus span&amp;quot;).text(&amp;quot;离线&amp;quot;) }; //连接发生错误的回调方法 ws.onerror = function () { console.log(&amp;quot;WebSocket连接发生错误&amp;quot;) $(&amp;quot;#chatStatus span&amp;quot;).text(&amp;quot;离线&amp;quot;) alert(&amp;quot;会话连接异常已断开,请刷新重新连接&amp;quot;) }; //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接, //防止连接还没断开就关闭窗口,server端会抛异常。 window.onbeforeunload = function () { closeWebSocket(); }</code></pre> <h5>返回示例</h5> <p><img src="https://images.soboys.cn/202305281055896.png" alt="" /></p>

页面列表

ITEM_HTML