El lado del servidor del nodo se conecta a la solución de IA iFlytek-Mars

secuencia:

        La demostración oficial del acoplamiento de nodos con Mars en realidad solo es adecuada para aplicaciones web desarrolladas por node, sin embargo, si se usa un nodo puro como servidor, es decir, llamado webapi , encontrará que location.host no puede obtener la ubicación directamente. . En este momento, necesitamos configurar un servicio wss separado. Con respecto a esto, Xue Lang escribió este tutorial.

        1. Nodo de Blogger: v18.12.1

        2、ws:v8.14.1(WebSocket)

        3、CryptoJS:4.0.0

texto:

1. Primero, instalemos las dependencias. Los dos comandos siguientes

cnpm install [email protected] -S
cnpm install [email protected] -S

2. Introducción

import WebSocket from "ws";
import CryptoJS from 'crypto-js'

3. Escribe la URL de inicialización.

function getWebsocketUrl(){
	    return new Promise((resolve, reject) => {
	        var apiKey = "你的apiKey"
	        var apiSecret = "你的apiSecret"
	        var url = 'wss://spark-api.xf-yun.com/v1.1/chat'
	        var host = "localhost:8001"
	        var date = new Date().toGMTString()
	        var algorithm = 'hmac-sha256'
	        var headers = 'host date request-line'
	        var signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v1.1/chat HTTP/1.1`
	        var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret)
	        var signature = CryptoJS.enc.Base64.stringify(signatureSha)
	        var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`
	        var authorization = btoa(authorizationOrigin)
	        url = `${url}?authorization=${authorization}&date=${date}&host=${host}`
	        resolve(url)
	    })
	}

Tenga en cuenta que aquí escribe directamente 8001! para localhost: 8001. Más adelante, podrá monitorear directamente esta interfaz de puerto durante la depuración.

4. Comience a monitorear

function wsFun(userSay,callback){
		getWebsocketUrl().then(url => {
			
			let ws = new WebSocket(url);
			ws.on('error', console.error);
			ws.on('open', function open() {
			  var params = {
			      "header": {
			          "app_id":"你的app_id",//这里记得替换app_id
			          "uid": "fd3f47e4-d"
			      },
			      "parameter": {
			          "chat": {
			              "domain": "general",
			              "temperature": 0.5,
			              "max_tokens": 1024
			          }
			      },
			      "payload": {
			          "message": {
			              "text": [
			                  {
			                      "role": "user",
			                      "content": userSay
			                  }
			              ]
			          }
			      }
			  }
			  ws.send(JSON.stringify(params))
			});
			ws.on('close', function close() {
			  
			});
			ws.on('message', function message(data) {
				var msgData=JSON.parse(data)
				if (msgData.header.code !== 0) {
					callback("提问失败",2)
				}else{
					callback(msgData.payload.choices.text[0].content,msgData.header.status)// 这个就是返回啦
				}
			});

		})
		
	}
wsFun("你好啊");

5. Ejecute código con puntos de interrupción

$ node --inspect-brk=8001 index.js

Tenga en cuenta que este 8001 es el puerto que acabamos de escribir para el host. El mensaje contiene la respuesta de Mars. Puede monitorear y volver a llamar usted mismo.

#productos secos   del programador #人间 despierto   #memorias frontales   #temas controvertidos   #puntos calientes del círculo de programadores

Supongo que te gusta

Origin blog.csdn.net/xuelang532777032/article/details/133017772
Recomendado
Clasificación