Cómo integrar ChatGPT en SAP ABAP

Introducción

Una idea general de cómo integrar ChatGPT con SAP ABAP:

  1. Primero, necesitaría tener acceso a una instancia del modelo ChatGPT, ya sea a través de la API de OpenAI o ejecutando el modelo localmente.
  2. A continuación, deberá crear un programa ABAP que llame a la API de ChatGPT y le pase el texto de entrada, como la pregunta de un usuario.
  3. Luego, el programa necesitaría manejar la respuesta de la API y analizar la salida de texto generada.
  4. Finalmente, el programa necesitaría mostrar el texto generado en un formato apropiado, como en una pantalla SAP GUI o en un archivo de salida.

Aquí hay un ejemplo de un código que podría usarse en un programa ABAP para llamar a la API de OpenAI y obtener una respuesta de ChatGPT:

LLAME A LA FUNCIÓN 'HTTP_POST' EXPORTANDO url = 'https://api.openai.com/v1/engines/davinci/completions' codificando = 'UTF-8' IMPORTANDO respuesta = l_response CAMBIANDO datos = l_data headers = l_headers EXCEPCIONES http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 OTROS = 4.

 

Cómo integrar ChatGPT en SAP ABAP

Como se muestra en la imagen a continuación, seguiremos tres sencillos pasos para integrar las API de ChatGPT en SAP ABAP Report.

Integrar ChatGPT en SAP ABAP

1. Obtener API de Open AI

Ya hemos discutido todos los pasos relacionados con la creación de API en este artículo.

2. Crear informe ABAP

Vaya a SE38 y cree un nuevo informe ABAP. Cree un parámetro de entrada como se muestra a continuación:

Informe ABAP de ChatGPT

3. Integrar la llamada ChatGPT

Escriba el código dado en su informe:

INFORMAR ZCHATGPT. PARAMETROS: l_ques tipo cadena. datos: l_response tipo cadena, l_data tipo cadena, lv_payload_x tipo xstring, l_max_tokens tipo i. "l_ques = '¿Cuál es el sentido de la vida?'. EJEMPLO l_max_tokens = 50. l_data = '{' && '"prompt":' && '"' && l_ques && '",' && '"max_tokens":' && l_max_tokens && '}'. LLAME A LA FUNCIÓN 'SCMS_STRING_TO_XSTRING' EXPORTACIÓN de texto = l_data IMPORTACIÓN de búfer = lv_payload_x. DATOS: lo_http_client TYPE REF TO if_http_client. DATOS: respuesta TYPE string, lv_auth TYPE string. CONSTANTES: lv_url TYPE string VALOR 'https://api. openai.com/v1/engines/davinci/completions'. "crear cliente HTTP por url MÉTODO DE LLAMADA cl_http_client=>create_by_url EXPORTANDO url = lv_url IMPORTANDO cliente = lo_http_client EXCEPCIONES argumento_no_encontrado = 1 plugin_no_activo = 2 error_interno = 3 OTROS = 4. SI sy- subrc <> 0. "manejo de errores ENDIF. "estableciendo el método de solicitud lo_http_client->request->set_method('POST'). "agregar encabezados lo_http_client->request->set_header_field( nombre = 'Content-Type' value = 'application/x-www-form-urlencoded' ). lo_http_client->request->set_header_field( name = 'Accept' value = 'application /json' ). lo_http_client->request->set_header_field( name = 'Authorization' value = 'Bearer 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' ). lo_http_client->request->set_form_field( EXPORTING name = 'prompt' " Name of form field value = l_ques ). "lo_http_client->request->set_data( lv_payload_x ). "Esquemas de seguridad disponibles para terminales API productivos "OAuth 2.0 CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 http_invalid_timeout = 4 OTROS = 5. IF sy-subrc = 0. MÉTODO DE LLAMADA lo_http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 OTROS = 5. ENDIF. IF sy-subrc <> 0. "respuesta de manejo de errores = lo_http_client->response->get_cdata( ). l_response = respuesta. MÁS. respuesta = lo_http_client->response->get_cdata(). SI la respuesta NO ES INICIAL. l_response = respuesta. MÁS. l_response = 'La llamada fue exitosa, pero no obtuve respuesta'. TERMINARA SI. TERMINARA SI. ESCRIBE l_response.

 

Explicación del código

Aquí, he agregado variables l_question e l_max_tokens para contener la pregunta del usuario y el valor máximo del token, respectivamente. A continuación, he añadido estos valores a la l_data variable, que se pasa como la data parámetro en el HTTP_POST llamada. La variable de respuesta l_response contendrá el texto generado como resultado de la llamada a la API.

Aquí, creé un objeto de clase if_http_client y agregué los encabezados usando el add_header_field método. Luego pasé este objeto como un parámetro 'administrador' en la llamada 'HTTP_POST'.

Es importante tener en cuenta que el formato de los datos pasados ​​a la API de OpenAI debe estar en formato JSON, por eso he agregado el aviso y max_tokens en formato JSON en la variable l_data.

Recuerda reemplazar con la clave API que ha generado utilizando la plataforma Open AI.

Pantalla de salida

Integración de Chat GPT con SAP ABAP

video tutorial

Puede ver el vídeo a continuación para aprender sobre la implementación:

Autor


Comentarios

3 respuestas a “Cómo integrar ChatGPT en SAP ABAP”

  1. hola, exelente trabajo. Tuve este error "api.openai.com: 443 falló: NIECONN_REFUSED (-10)". ¿Significa que debo usar algún tipo de SSL o registrarme en ICF?

    Muchas Gracias

    1. Avatar de Barry Allen
      Barry Allen

      Puede ser que su SSL tenga problemas o que su límite de API se haya agotado.

  2. Hola barry,
    Recibí un error con http_communication_failure = 1 después del MÉTODO DE LLAMADA lo_http_client->receive. Por favor avise, gracias.

Deje un comentario

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *

Este sitio usa Akismet para reducir el correo no deseado. Descubra cómo se procesan los datos de sus comentarios.