[Base de conocimientos de Unity + Wenxin] Utilice Baidu Intelligent Cloud para crear una base de conocimientos privada, integrar la API de la base de conocimientos y crear una hermana bidimensional de IA con una base de conocimientos

1.Breve descripción

        Recientemente me enteré por el soporte técnico oficial de Baidu Smart Cloud que Baidu Qianfan Large Model Platform actualmente proporciona una función de base de conocimientos en línea, que puede cargar sus propios documentos de base de conocimientos privados en línea y configurar el modelo Wenxin Yiyan como motor de generación de texto. su propia base de conocimientos privada. En el pasado, usaba el marco langchain para construir mi propia base de conocimientos y la implementaba localmente. Ahora, a través de la plataforma de construcción de bases de conocimientos proporcionada por Baidu Smart Cloud, puedo crear fácilmente mi propia aplicación de base de conocimientos privada. Además, esta La aplicación de base de conocimientos también proporciona capacidades de llamada API, que se pueden integrar fácilmente en nuestras propias aplicaciones, lo cual es muy bueno. Entonces, en este artículo, le presentaré brevemente cómo crear su propia aplicación de base de conocimientos en Baidu Intelligent Cloud Platform y cómo utilizar los servicios API para integrar la función de base de conocimientos en mi proyecto de dama bidimensional de IA.

2. Subir base de conocimientos

        ​ ​ ​ Primero, debemos iniciar sesión en el sitio web oficial de Baidu Smart Cloud y todos deben preparar sus propias cuentas. El sitio web oficial de Baidu Smart Cloud es el siguiente:

https://cloud.baidu.com/icono-default.png?t=N7T8https://cloud.baidu.com/

        Después de iniciar sesión en Baidu Intelligent Cloud Platform, encontramos [Productos->Qianfan Large Model Super Factory->RAG Q&A Application] en el menú del sitio web oficial y hacemos clic para ingresar a la vista de la aplicación de la base de conocimientos.

        En la interfaz de control de la aplicación Baidu Intelligent Cloud Knowledge Base, puede seleccionar la base de conocimientos y ver la vista de la base de conocimientos.

        ​​​Haga clic para crear una colección de base de conocimientos para ingresar a la vista de carga de la base de conocimientos.

        Aquí, los formatos de documentos que puede admitir la base de conocimientos de Baidu Smart Cloud incluyen Word, Txt y PDF. Solo necesitamos cargar nuestros propios documentos de conocimientos y el sistema procesará automáticamente el contenido del documento, dividirá el contenido del documento y extraerá el contenido de el documento contenido del conocimiento. Una vez que la carga se realiza correctamente, podemos ver los resultados de la división del documento cargado y los fragmentos de conocimiento extraídos.

        La misma colección de base de conocimientos puede cargar múltiples contenidos de documentos. Una vez completada la carga, crearemos nuestra propia colección de base de conocimientos exclusiva. La construcción posterior de aplicaciones de base de conocimientos requiere el uso de colecciones de bases de conocimientos relevantes. A continuación, veamos cómo crear una aplicación de base de conocimientos.

3. Cree una aplicación de base de conocimientos

        Una vez creada la colección de la base de conocimientos, podemos crear nuestra propia aplicación de base de conocimientos. Haga clic en Mis aplicaciones y haga clic en Crear una nueva aplicación para comenzar a crear su propia aplicación de base de conocimientos.

        Baidu Intelligent Cloud proporciona oficialmente tres plantillas de aplicaciones construibles, que incluyen una aplicación de generación básica, una aplicación de preguntas y respuestas RAG y una aplicación de diálogo humano. Las dos últimas plantillas son plantillas conversacionales. Necesitamos crear aplicaciones de base de conocimientos conversacionales, como aplicaciones de robots de servicio al cliente para IA. , debe utilizar las dos últimas plantillas.

        Después de seleccionar una plantilla, cree la aplicación y la interfaz ingresará a la vista de creación de aplicaciones de la base de conocimientos.

        En la interfaz de creación de la aplicación de la base de conocimientos, podemos seleccionar y especificar la colección de la base de conocimientos correspondiente a la base de conocimientos privada y seleccionar una aplicación de modelo de lenguaje grande según nuestras propias necesidades. Aquí también podemos elegir el servicio de prueba gratuito proporcionado por el funcionario, que ofrece 200 llamadas gratuitas de Wenxin Big Model 4.0 para que todos puedan elegir. Si elegimos un servicio de modelo grande de pago, primero debemos crear una aplicación de modelo grande en la plataforma de modelo grande de Qianfan. Puede consultar mi artículo anterior para esta operación.

        Una vez completada la configuración, podemos probar el servicio de modelo grande creado en el lado derecho de la interfaz para verificar el efecto de la aplicación de la base de conocimientos. Una vez que la prueba sea correcta, haga clic en Publicar para publicar la aplicación de la base de conocimientos.

        Se proporcionan dos formularios accesibles en la interfaz de publicación de la aplicación:

        ①Podemos acceder a la aplicación de la base de conocimientos a través del navegador copiando la dirección de servicio de la aplicación de la base de conocimientos;

        ②Se puede acceder a las aplicaciones de la base de conocimientos mediante llamadas API.

        Esto puede basarse en sus necesidades reales.

4. Implementación del código de la aplicación de base de conocimientos de llamadas API

        Esta sección se centrará en cómo acceder a la aplicación de base de conocimientos creada a través de llamadas API. En la página de lanzamiento de la aplicación, puede encontrar la entrada del documento para las instrucciones de llamada a la API. Antes de implementar el código de llamada a la API, primero leemos la documentación de la API.

        El proceso de llamada API es muy simple. Primero, necesitamos crear la CLAVE API cuando se lanza la aplicación. Después de obtener la clave API, podemos usar la solicitud POST para acceder a ella de acuerdo con la especificación de la interfaz de la llamada API. La siguiente es la descripción de la interfaz relacionada con API:

       4.1 Crear clave API

        Para crear una clave API, solo necesita hacer clic en Crear CLAVE API en la interfaz de publicación de la aplicación para obtener la clave. Conserve la información de la clave API correctamente.

        ​ ​ 4.2 Descripción de la interfaz API

        Método de llamada API, según la descripción del documento de la interfaz, podemos entender:

        Dirección y método de solicitud de API:

        Dirección de solicitud:https://console.bce.baidu.com/api/ai_apaas/v1/instance/integrated
        Método de solicitud:POST

        Parámetros del encabezado

parámetro valor ilustrar
Tipo de contenido aplicación/json -
Autorización X Portador {Clave API} Campo de autenticación, la clave API debe completarse entre llaves

        ​Parámetros corporales

Nota: Se requiere una estructura en formato JSON para describir el contenido específico de una solicitud.

parámetro ¿Es necesario? tipo Rango de valores opcional describir
consulta cadena - Consulta de solicitud del usuario
modo_respuesta cadena transmisión/bloqueo El modo de respuesta admite los dos tipos siguientes:
1. streaming: respuesta de streaming, utilizando el protocolo SSE
2. bloqueo: respuesta de bloqueo
id_conversación No UUID - ID de conversación, solo válido para aplicaciones conversacionales. En aplicaciones conversacionales:
1. Vacío: indica que la tabla crea una nueva sesión
2. No vacío: indica que la conversación continúa en la sesión correspondiente, y el servicio se mantiene internamente Historial de conversaciones

        Instrucciones de respuesta

parámetro ¿Es necesario? tipo describir
código En t código de error. Un valor distinto de 0 es un error; consulte la descripción del código de error.
mensaje cadena Mensaje de error
resultado No objeto Devolver resultados
+ respuesta cadena Resultados de la respuesta de la aplicación
+ id_conversación No UUID ID de conversación, sólo válido para aplicaciones conversacionales. Si no hay un id_conversación en la solicitud de conversación, se generará uno automáticamente.

        código de error

código de error mensaje de error describir
400 Error de argumento de solicitud no válida Error de parámetro de solicitud
401 Error de permiso denegado error de permiso
404 Recurso no encontrado No se pueden encontrar cuentas, aplicaciones, modelos, plantillas, etc.
500 Error Interno del Servidor Error interno del servidor
1001 Límite de cuota excedido Se supera el límite de llamadas y el cupo libre es insuficiente.
1004 Error de respuesta de transmisión de LLM Error de servicio del modelo
1005 Error de valores de plantilla Error de verificación de parámetros de plantilla
1006 Límite de cuota vencido La cuota gratuita ha caducado
1007 Error de servicio de Qianfan No se puede acceder al servicio Qianfan
1008 Error de permiso denegado de Qianfan Error de acceso al servicio Qianfan, generalmente debido a un error de permiso

4.3 Implementación de código de llamada a la interfaz API

        ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​Implementaré el código en Unity. El código principal es como sigue:

   #region Params
    [Header("填写百度助手的apikey")]
    [SerializeField] private string m_ApiKey = string.Empty;

    private string m_ConversationID= string.Empty;//对话id

    #endregion

    #region Method

    private void Awake()
    {
        url = "https://console.bce.baidu.com/api/ai_apaas/v1/instance/integrated";
    }

    /// <summary>
    /// 发送消息
    /// </summary>
    /// <returns></returns>
    public void PostMsg(string _msg, Action<string> _callback)
    {
        base.PostMsg(_msg, _callback);
    }


    /// <summary>
    /// 发送数据
    /// </summary> 
    /// <param name="_postWord"></param>
    /// <param name="_callback"></param>
    /// <returns></returns>
    public IEnumerator Request(string _postWord, System.Action<string> _callback)
    {
        stopwatch.Restart();
        string jsonPayload = JsonConvert.SerializeObject(new RequestData
        {
           query= _postWord,
           conversation_id=m_ConversationID
        });

        using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
        {
            byte[] data = System.Text.Encoding.UTF8.GetBytes(jsonPayload);
            request.uploadHandler = (UploadHandler)new UploadHandlerRaw(data);
            request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("X-Authorization ", m_ApiKey);

            yield return request.SendWebRequest();

            if (request.responseCode == 200)
            {
                string _msg = request.downloadHandler.text;
                ResponseData response = JsonConvert.DeserializeObject<ResponseData>(_msg);

                if (response.code == 0)
                {
                    string _msgBack = response.result.answer;
                    m_ConversationID = response.result.conversation_id;

                    //添加记录
                    m_DataList.Add(new SendData("assistant", _msgBack));
                    //回调
                    _callback(_msgBack);
                }
                else
                {
                    OnLogError(response.code);
                }
            
            }

        }

        stopwatch.Stop();
        Debug.Log("文心一言AI助手耗时:" + stopwatch.Elapsed.TotalSeconds);
    }

    /// <summary>
    /// 打印错误信息
    /// </summary>
    /// <param name="code"></param>
    private void OnLogError(int code)
    {
        if (code == 400)
        {
            Debug.LogError("请求参数错误");
            return;
        }
        if (code == 401)
        {
            Debug.LogError("权限错误");
            return;
        }
        if (code == 404)
        {
            Debug.LogError("账户、应用、模型、模版等无法找到");
            return;
        }
        if (code == 500)
        {
            Debug.LogError("服务器内部错误");
            return;
        }
        if (code == 1001)
        {
            Debug.LogError("调用超限,免费额度不足");
            return;
        }
        if (code == 1004)
        {
            Debug.LogError("模型服务报错");
            return;
        }
        if (code == 1005)
        {
            Debug.LogError("模版参数校验错误");
            return;
        }
        if (code == 1006)
        {
            Debug.LogError("免费额度已过期");
            return;
        }
        if (code == 1007)
        {
            Debug.LogError("千帆服务无法访问");
            return;
        }
        if (code == 1008)
        {
            Debug.LogError("千帆服务访问失败,一般是权限错误");
            return;
        }
    }


    #endregion

    #region 数据定义

    [Serializable]
    private class RequestData
    {
        [SerializeField] public string query=string.Empty;//对话内容
        [SerializeField] public string response_mode= "blocking";//对话模式 1. streaming:流式响应,使用SSE协议  2. blocking:阻塞响应
        [SerializeField] public string conversation_id=string.Empty;//对话id,第一次对话后返回,用作聊天记录,服务端自行处理
    }

    [Serializable]
    private class ResponseData
    {
        [SerializeField] public int code;
        [SerializeField] public string message = string.Empty;
        [SerializeField] public ReData result = new ReData();

    }

    [Serializable]
    private class ReData
    {
        [SerializeField] public string answer = string.Empty;//回复
        [SerializeField] public string conversation_id = string.Empty;//对话id
    }

    #endregion

        Al llamar al método PostMsg, se puede realizar la función de enviar la información de texto de entrada a la interfaz API de la base de conocimientos y devolver el texto de información respondido por la IA.

5. Configuración del lado de la unidad

        Con respecto al módulo de llamada API de Wenxin Knowledge Base, lo actualicé a mi proyecto de código abierto. Esta sección presentará el método de configuración en el lado de la unidad. Tenga en cuenta que se requiere que la versión de unity sea 2020.3.44 y superior.

        En el lado de Unity, encontramos el objeto "Wenxin Knowledge Base" debajo del objeto LLM, completamos la CLAVE API de la aplicación de la base de conocimientos en el script del objeto y configuramos el objeto Wenxin Knowledge Base como el módulo LLM de ChatAgent para completar el configuración. Para conocer el proceso de configuración detallado, consulte mi video de Bilibili.

6. Conclusión

        Este artículo presenta en detalle cómo crear una combinación de base de conocimientos en Baidu Intelligent Cloud Platform y crear su propia aplicación de base de conocimientos privada, y también implementa el acceso API para integrar la aplicación de base de conocimientos de Baidu Wenxin en la minicaja AI 2D. Proyecto hermano. A través de la integración de esta aplicación, nuestra señora de IA tendrá una base de conocimientos. Para ver un video explicativo detallado del contenido cubierto en este artículo, los amigos interesados ​​pueden ver mi video Bilibili, el siguiente es el portal de videos:

[Base de conocimientos de Unity + Wenxin] Utilice Baidu Intelligent Cloud para crear una base de conocimientos privada, integrar la API de la base de conocimientos y crear una hermana bidimensional de IA con una base de conocimientos


Portal de direcciones del proyecto:

Proyecto de código abierto de esposa bidimensional de IA (unity-AI-Chat-Toolkit):

Dirección de Github: https://github.com/zhangliwei7758/unity-AI-Chat-Toolkit

Dirección de la casa rural: https://gitee.com/DammonSpace/unity-ai-chat-toolkit
 

Supongo que te gusta

Origin blog.csdn.net/sinat_28962939/article/details/134978346
Recomendado
Clasificación