De 0 a 1, use chatGPT y simplemente llame a la API de JAVA para realizar la interacción con la página web.

Prefacio

  Este artículo analiza de 0 a 1, cómo registrar una cuenta GPT, cómo escribir mensajes (prompt) y ejemplos simples de llamadas Java simples a la API. Si está interesado en GPT pero no sabe cómo comenzar, puedes leerlo Siguiente este artículo

Proceso de registro

1. Puede acceder al sitio web oficial normalmente: https://openai.com/
2. Prepare una dirección de correo electrónico extranjera disponible, como gmail, microsoft email, etc. Hasta ahora, el buzón qq, el 163 y otros buzones nacionales no están disponibles
3. Prepare un teléfono móvil disponible que acepte el código de verificación (por ejemplo, a través de: sms-active)

  La siguiente es una captura de pantalla del proceso de registro. El número de teléfono móvil indio que estoy usando actualmente se puede utilizar para pruebas personales.

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
4. Inicie sesión en el sitio web oficial de GPT, haga clic en registrarse, use una dirección de correo electrónico extranjera y el número de teléfono móvil que compró. Después de la verificación por SMS, puede usar GPT3.5 normalmente.
Insertar descripción de la imagen aquí

¿Cómo hacer que las palabras clave sean más precisas?

  Como se muestra en la descripción en el sitio web oficial, existen las siguientes 6 estrategias de prueba básicas. Por ejemplo:

Mal mensaje: Por favor, dame un párrafo que describa un automóvil.
Buen mensaje: Por favor, dame un párrafo en chino que describa un automóvil deportivo Porsche. El artículo debe tener unas 50 palabras.

  En pocas palabras, es para proporcionar información más precisa, de modo que el modelo grande tenga una mejor información de coincidencia correspondiente, en lugar de dejar que la IA adivine lo que desea.
Insertar descripción de la imagen aquí

llamada simple a la API

Insertar descripción de la imagen aquí

  Los amigos que ven aquí deben haber adivinado que se trata de enviar un formato específico de solicitud http al servidor open-ai, y luego analizamos o mostramos la información que nos brinda la respuesta, así que a continuación echemos un vistazo a open-ai. Aproximadamente qué interfaces se proporcionan y cómo escribir un programa java para solicitar estas interfaces

  Requisito previo: solicitar sk clave
Insertar descripción de la imagen aquí

Utilice httpclient para completar manualmente los encabezados de solicitud

  La primera es usar HttpClients manualmente para construir el objeto de solicitud. Por supuesto, el pom debe introducir la dependencia de httpclient.

       <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>XXX</version>
        </dependency>
//问:请告诉我java序列化的方式
    @RequestMapping("/chat")
    public void streamChat()throws IOException {
    
    
        CloseableHttpClient httpclient = HttpClients.createDefault();

        try {
    
    
            HttpPost httpPost = new HttpPost("https://api.openai.com/v1/chat/completions");

            StringEntity requestEntity = new StringEntity(
                    "{\"model\": \"gpt-3.5-turbo\",\"messages\": [{ \"role\" : \"user\" , \"content\":  \"请告诉我java序列化的方式\"}], \"temperature\": 0.7, \"max_tokens\": 100}",
                    "UTF-8"
            );

            requestEntity.setContentType("application/json");
            //如果有用梯子 代理的端口 ip  
            HttpHost proxy = new HttpHost("代理ip", 代理端口);
            RequestConfig requestConfig = RequestConfig.custom()
                    .setProxy(proxy)
                    .setConnectTimeout(10000)
                    .setSocketTimeout(10000)
                    .setConnectionRequestTimeout(3000)
                    .build();

            httpPost.setConfig(requestConfig);
            httpPost.setEntity(requestEntity);

            httpPost.addHeader("Authorization", "Bearer sk-你的密钥");
            httpPost.addHeader("Content-Type", "application/json");

            CloseableHttpResponse response = httpclient.execute(httpPost);

            try {
    
    
                HttpEntity entity = response.getEntity();
                if (entity != null) {
    
    
                    String result = EntityUtils.toString(entity);
                    System.out.println(result);
                }
            } finally {
    
    
                response.close();
            }
        } finally {
    
    
            httpclient.close();
        }

    }

Métodos de embalaje confeccionados.

Por ejemplo, el paquete de la comunidad java TheoKanning/openai-java   especificado en el sitio web oficial

Insertar descripción de la imagen aquí

  Encontré un paquete mejor y más conciso empaquetado por un amigo. Este es el enlace de su proyecto:
https://github.com/asleepyfish/chatgpt
  . Puedes probarlo, introducir las dependencias de este proyecto y luego probarlo.

    @RestController
    public class ChatGPTController {
    
    
        @GetMapping("/downloadImage")
        public void downloadImage(String prompt, HttpServletResponse response) {
    
    
            OpenAiUtils.downloadImage(prompt, response);
        }
    }

    @GetMapping("/streamChatWithWeb")
    public void streamChatWithWeb(String content, HttpServletResponse response) throws IOException {
    
    
        // 需要指定response的ContentType为流式输出,且字符编码为UTF-8
        response.setContentType("text/event-stream");
        response.setCharacterEncoding("UTF-8");
        OpenAiUtils.createStreamChatCompletion(content, response.getOutputStream());
    }

efecto final

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44716086/article/details/131849308
Recomendado
Clasificación