Serie de desarrollo OpenAI (4): método maestro de llamada a la API OpenAI

El texto completo tiene más de 4000 palabras en total y el tiempo de lectura esperado es de aproximadamente 17 a 30 minutos | Lleno de productos secos (con código), ¡se recomienda recopilar!

El objetivo de este artículo: aclarar el proceso de obtención de la clave API de OpenAI, comprender cómo llamar a varios modelos grandes de OpenAI y comprender sus parámetros relacionados correspondientes.

imagen-20230810135521201

Descarga del código clic aquí

1. Obtenga claves API de OpenAI

Premisa: tiene una cuenta OpenAI y puede acceder a Internet mágicamente. Si hay problemas relacionados con las cuentas o el acceso a Internet usando magia, puede consultar el contenido al final de este artículo y configurarlo usted mismo.

Consulte el sitio web oficial de OpenAI . El proceso específico para obtener las claves API de OpenAI es el siguiente

  • Paso 1: inicie sesión en su cuenta OpenAI

Inicie sesión en su cuenta OpenAI con su dirección de correo electrónico y contraseña

imagen-20230713224316125

  • Paso 2: cree una clave API

Seleccione "Claves API" en la barra de menú de la izquierda y haga clic en el botón "+ Crear nueva clave API".

imagen-20230713224820536

  • Paso 3: personaliza el nombre

En la ventana emergente, cree un nombre para la clave API.

imagen-20230713224930450

Luego copie y guarde el código de clave completo. Nota: guárdelo bien, esta clave solo se puede copiar cuando se crea .

2. Configure la variable de entorno para almacenar la clave secreta.

El propósito fundamental de almacenar la clave API en una variable de entorno en lugar de escribirla directamente en el código es reducir el riesgo de filtrar la clave . De esa manera, incluso si alguien ve accidentalmente su código, no podrá obtener su clave API. Después de todo, esto cuesta dinero, por lo que debe ser arriesgado que otros lo roben.

Al mismo tiempo, también es fácil de administrar en el desarrollo de pruebas. Si varios proyectos usan la API OpenAI, solo necesita modificar las variables de entorno y todos los proyectos pueden usar automáticamente la nueva clave, ¡lo que ahorra tiempo y esfuerzo!

El método de configuración en el entorno de desarrollo de Windows es el siguiente :

  • Paso 1: ingrese las variables de entorno

imagen-20230713225643442

  • Paso 2: cree una nueva variable del sistema

Establezca el nombre de la variable en OPENAI_API_KEY y el valor de la variable es la clave API de OpenAI (es decir, la clave copiada en el paso anterior). Nota : Una vez completada la configuración, la computadora debe reiniciarse para que surta efecto.

imagen-20230713225900206

3. Prueba de conectividad

Documento del sitio web oficial de OpenAI

imagen-20230713230230991

  • Paso 1: instale la biblioteca openai
!pip install openai
  • Paso 2: obtenga la clave secreta en la variable del sistema
import openai
import os

openai.api_key = os.getenv("OPENAI_API_KEY")

# 如果你不想通过环境变量的方式读取OpenAI API Keys,直接这样写代码
openai.api_key= "API Key" 
  • Paso 3: probar la conectividad
# 创建一个 GPT-3 请求
completion = openai.ChatCompletion.create(
  model="gpt-3.5-turbo-16k",
  messages=[
    {
    
    "role": "user", "content": "Hello, Nice to meet you"}
  ]
)

print(completion.choices[0].message)

¡Éxito de la prueba!

imagen-20230715113407230

4. Parámetros básicos de la API OpenAI

Interfaz de la serie 4.1 GPT3.5

imagen-20230715114051302

imagen-20230715114210371

La serie GPT-3.5 es una serie de modelos de entrenamiento mixtos de texto y código antes del cuarto trimestre de 2021.

Los siguientes son varios modelos de la serie GPT-3.5

  • code-davinci-oo2 es un modelo base adecuado para tareas de finalización de código puro.

  • text-davinci-002 es un modelo de InstructGPT basado en code-davinci-002.

  • text-davinci-003 es una versión mejorada de text-davinci-002.

  • gpt-3.5-turbo-0301 se ha mejorado sobre la base de text-davinci-003 y se ha optimizado para aplicaciones de chat.

4.2 Interfaz GPT4

El 7 de julio de 2023, OpenAI anunció en su sitio web oficial que la API gpt-4 está completamente abierta para su uso. Todos los usuarios de API pagos pueden acceder directamente a gpt-4 en un contexto de 8k sin esperas. ¡No esperes más para presentar tu solicitud!

imagen-20230715120929180

GPT-4 es un modelo multimodal grande (actualmente acepta entrada de texto y genera salida de texto, y admitirá la entrada de imágenes en el futuro), similar a gpt-3.5-turbo, GPT-4 está optimizado para chat, pero en la finalización tradicional Las tareas pueden también funcionan bien, ambos pueden usar la API de finalización de chat.

Los siguientes son varios modelos de la serie GPT-4.

  • gpt-4 es más potente que cualquier modelo GPT-3.5, capaz de realizar tareas más complejas y optimizado para chatear.
  • gpt-4-32k tiene las mismas características que el modelo base gpt-4, pero con un aumento de 4 veces en la longitud del contexto. Se actualizará con las últimas iteraciones del modelo.

5. Cómo utilizar la API

5.1 Método de llamada básico de terminaciones

Cuando se llama a la API de Completions, dada una pista, el modelo devolverá uno o más resultados predichos y, opcionalmente, la probabilidad de un marcador candidato en cada posición.

El método de llamada proporcionado por el sitio web oficial de OpenAI es:

 openai.ChatCompletion.create()

imagen-20230715121402445

Sus parámetros importantes y comúnmente utilizados son los siguientes:

1

El método de llamada de código es el siguiente:

completions_reponse = openai.Completion.create(
  model="text-davinci-003",
  prompt="test Completions api",
)

Eche un vistazo a los resultados devueltos:

imagen-20230810112624877

5.2 Método de llamada básico para finalizar el chat

Chat Completions es un modelo de lenguaje dedicado a la finalización de chat, que puede aceptar una lista de mensajes como entrada y devolver los mensajes generados por el modelo como salida. De manera similar al diálogo ChatGPT utilizado, se pueden realizar juegos de roles para responder una serie de preguntas y sus parámetros son los siguientes:

imagen-20230715131751723

En el modelo de Chat, al establecer diferentes palabras clave de rol para el parámetro de rol en los mensajes, se pueden asignar diferentes capacidades a la entrada actual, como el siguiente código:

completion = openai.ChatCompletion.create(
  model="gpt-3.5-turbo-16k-0613",
  messages=[
    # 通过给role设置为system,给Chat模型的此处对话赋予角色定位
    {
    
    "role": "system", "content": "你是一位精通机器学习和自然语言处理的AI领域专家,具备20年相关经验"}, 
       
    # 通过给role设置为user,告诉Chat模型此输入是这次会话的提问者                                   
    {
    
    "role": "user", "content": "我是一个小白,我想入门AI领域,我需要学习哪些知识"}
  ]
)

El resultado es el siguiente:

imagen-20230810113235051

En pocas palabras, el código anterior llama al modelo de Chat para obtener la respuesta: primero deje que el modelo de Chat desempeñe el papel de un experto en el campo de la IA y luego use este rol para responder la pregunta de cómo quiero aprender. AI.

5.3 Finalizaciones de chat para lograr múltiples rondas de diálogo

ChatGPT, con el que estamos más familiarizados, tiene la capacidad de memoria contextual en una conversación continua. De hecho, la API utilizada detrás de ChatGPT también es gpt3.5 y gpt4. Para llamadas de código directo, si desea tener múltiples rondas de conversaciones. , es lo mismo que ChatGPT, la idea es: pasar la salida del anterior a la api de gpt, uniéndolas como entrada a la api de gpt, para lograr la capacidad de memoria de contexto, el ejemplo de código es el siguiente :

  • Paso 1: Realizar la primera ronda de diálogo
completion = openai.ChatCompletion.create(
  model="gpt-3.5-turbo-16k-0613",
  messages=[
    {
    
    "role": "system", "content": "你是一位精通机器学习和自然语言处理的AI领域专家,具备20年相关经验"}, 
                                            
    {
    
    "role": "user", "content": "我是一个小白,我想入门AI领域,我需要学习哪些知识"}
  ]
)

Mira la respuesta del modelo:

imagen-20230810114723619

Puedes ver su contenido así:

imagen-20230810114940978

  • Paso 2: Empalmar las respuestas de la primera ronda de diálogo del modelo con la nueva entrada

Agregue el resultado de la respuesta de la primera ronda del modelo a los mensajes del modelo de Chat, es decir, el contenido en el contenido, y al mismo tiempo establezca el rol = asistente del contenido, el código es el siguiente:

completion_second = openai.ChatCompletion.create(
  model="gpt-3.5-turbo-16k-0613",
  messages=[
    {
    
    "role": "system", "content": "你是一位精通机器学习和自然语言处理的AI领域专家,具备20年相关经验"}, 
                                         
     {
    
    "role": "user", "content": "我是一个小白,我想入门AI领域,我需要学习哪些知识"},
      
     # 注意:这里通过设置role =  assistant可以告诉Chat模型,这个输入是模型返回的答案
     {
    
    "role": "assistant", "content": "\u4f5c\u4e3a\u4e00\u4e2a\u521d\u5b66\u8005\uff0c\u4f60\u53ef\u4ee5\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u6765\u5b66\u4e60AI\u9886\u57df\u7684\u77e5\u8bc6\uff1a\n\n1. \u5148\u4e86\u89e3\u673a\u5668\u5b66\u4e60\u7684\u57fa\u672c\u6982\u5ff5\uff1a\u673a\u5668\u5b66\u4e60\u662f\u4e00\u79cd\u8ba9\u8ba1\u7b97\u673a\u901a\u8fc7\u6570\u636e\u5b66\u4e60\u548c\u63d0\u9ad8\u6027\u80fd\u7684\u65b9\u6cd5\u3002\u4f60\u53ef\u4ee5\u5b66\u4e60\u673a\u5668\u5b66\u4e60\u7684\u57fa\u672c\u6982\u5ff5\uff0c\u5982\u76d1\u7763\u5b66\u4e60\u3001\u65e0\u76d1\u7763\u5b66\u4e60\u3001\u5f3a\u5316\u5b66\u4e60\u7b49\u3002\n\n2. \u5b66\u4e60Python\u7f16\u7a0b\u8bed\u8a00\uff1aPython\u662fAI\u9886\u57df\u5e38\u7528\u7684\u7f16\u7a0b\u8bed\u8a00\u4e4b\u4e00\uff0c\u5b66\u4e60Python\u5bf9\u4e8e\u8fdb\u884c\u6570\u636e\u5904\u7406\u548c\u7b97\u6cd5\u5b9e\u73b0\u975e\u5e38\u91cd\u8981\u3002\u4f60\u53ef\u4ee5\u901a\u8fc7\u5728\u7ebf\u6559\u7a0b\u3001\u89c6\u9891\u6559\u7a0b\u6216\u8005\u53c2\u52a0\u57f9\u8bad\u73ed\u6765\u5b66\u4e60Python\u3002\n\n3. \u638c\u63e1\u6570\u636e\u5904\u7406\u548c\u6570\u636e\u5206\u6790\u6280\u80fd\uff1aAI\u7684\u6838\u5fc3\u5728\u4e8e\u6570\u636e\uff0c\u638c\u63e1\u6570\u636e\u5904\u7406\u548c\u6570\u636e\u5206\u6790\u6280\u80fd\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002\u4f60\u53ef\u4ee5\u5b66\u4e60\u6570\u636e\u6e05\u6d17\u3001\u6570\u636e\u53ef\u89c6\u5316\u3001\u6570\u636e\u7edf\u8ba1\u7b49\u76f8\u5173\u77e5\u8bc6\u3002\n\n4. \u5b66\u4e60\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\uff1a\u5b66\u4e60\u4e00\u4e9b\u5e38\u7528\u7684\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\uff0c\u5982\u7ebf\u6027\u56de\u5f52\u3001\u903b\u8f91\u56de\u5f52\u3001\u51b3\u7b56\u6811\u3001\u652f\u6301\u5411\u91cf\u673a\u3001\u795e\u7ecf\u7f51\u7edc\u7b49\u3002\u4e86\u89e3\u7b97\u6cd5\u7684\u539f\u7406\u548c\u9002\u7528\u573a\u666f\uff0c\u5e76\u5c1d\u8bd5\u5b9e\u73b0\u8fd9\u4e9b\u7b97\u6cd5\u3002\n\n5. \u5b66\u4e60\u6df1\u5ea6\u5b66\u4e60\uff1a\u6df1\u5ea6\u5b66\u4e60\u662fAI\u9886\u57df\u7684\u4e00\u4e2a\u70ed\u95e8\u65b9\u5411\uff0c\u5b83\u662f\u4e00\u79cd\u57fa\u4e8e\u795e\u7ecf\u7f51\u7edc\u7684\u5b66\u4e60\u65b9\u6cd5\u3002\u4f60\u53ef\u4ee5\u5b66\u4e60\u6df1\u5ea6\u5b66\u4e60\u7684\u57fa\u672c\u539f\u7406\u3001\u5e38\u7528\u7684\u795e\u7ecf\u7f51\u7edc\u67b6\u6784\u548c\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\n6. \u5b66\u4e60\u81ea\u7136\u8bed\u8a00\u5904\u7406\uff1a\u81ea\u7136\u8bed\u8a00\u5904\u7406\u662fAI\u9886\u57df\u7684\u4e00\u4e2a\u91cd\u8981\u65b9\u5411\uff0c\u5b83\u6d89\u53ca\u5230\u5bf9\u6587\u672c\u548c\u8bed\u8a00\u7684\u7406\u89e3\u548c\u5904\u7406\u3002\u4f60\u53ef\u4ee5\u5b66\u4e60\u6587\u672c\u5904\u7406\u3001\u8bcd\u5d4c\u5165\u3001\u60c5\u611f\u5206\u6790\u7b49\u76f8\u5173\u77e5\u8bc6\u3002\n\n7. \u5b9e\u8df5\u9879\u76ee\uff1a\u5e94\u7528\u6240\u5b66\u77e5\u8bc6\u8fdb\u884c\u5b9e\u8df5\u9879\u76ee\u662f\u5de9\u56fa\u548c\u63d0\u9ad8\u6280\u80fd\u7684\u91cd\u8981\u65b9\u5f0f\u3002\u4f60\u53ef\u4ee5\u53c2\u52a0\u4e00\u4e9b\u516c\u5f00\u7684\u673a\u5668\u5b66\u4e60\u7ade\u8d5b\uff0c\u6216\u8005\u81ea\u5df1\u627e\u4e00\u4e9b\u6570\u636e\u8fdb\u884c\u5b9e\u9645\u7684\u9879\u76ee\u5b9e\u8df5\u3002\n\n\u8bb0\u4f4f\uff0cAI\u9886\u57df\u662f\u4e00\u4e2a\u5feb\u901f\u53d1\u5c55\u7684\u9886\u57df\uff0c\u9700\u8981\u4e0d\u65ad\u5b66\u4e60\u548c\u5b9e\u8df5\u3002\u73b0\u5728\u6709\u5f88\u591a\u4f18\u8d28\u7684\u5728\u7ebf\u8d44\u6e90\u548c\u8bfe\u7a0b\u4f9b\u5b66\u4e60\u8005\u4f7f\u7528\uff0c\u4f60\u53ef\u4ee5\u9009\u62e9\u9002\u5408\u81ea\u5df1\u7684\u5b66\u4e60\u8def\u5f84\u548c\u65b9\u6cd5\u8fdb\u884c\u5b66\u4e60\u3002"},

    {
    
    "role": "user", "content": "关于第5条深度学习方面,你帮我更加详细的介绍一下"}
  ]
)

Mire el resultado del modelo:

imagen-20230810115934472

Se puede ver claramente que la segunda ronda de respuestas continúa sobre la base de la primera ronda de diálogo, que también proporciona una manera de pensar en el diálogo de múltiples rondas.

5.3 Método de llamada básico de imágenes

El modelo Imágenes puede crear una imagen a partir de una pista dada.

imagen-20230715160632794

ImagesAPI proporciona tres formas de interactuar con imágenes:

1. Cree imágenes desde cero basándose en indicaciones de texto.

2. Cree ediciones en imágenes existentes basadas en nuevas indicaciones de texto.

3. Cree variaciones de imágenes existentes

Sus parámetros son los siguientes:

2

Mira el código:

openai.Image.create(
  prompt="一只白色小猫\在野地上\奔跑",
  n=1,
  size='512x512'
)

El resultado es el siguiente:

imagen-20230715161900010

Haga clic en el enlace para ver la imagen generada. Aunque es un poco fea, debe iniciar el proyecto. Aquí hay un ejemplo simple.

imagen-20230715161938919

También puedes modificar el tamaño de la imagen, editar la imagen, etc., puedes probarlo tú mismo, referencia del código:

# 修改图片尺寸
from PIL import Image

def transfer(infile, outfile):
    im = Image.open(infile)
    reim=im.resize((512, 512))#宽*高

    reim.save(outfile,dpi=(200.0,200.0)) ##200.0,200.0分别为想要设定的dpi值


if __name__ == '__main__':
    infil=r"mask.png"
    outfile=r"mask_512.png"
    transfer(infil, outfile)
# edit 图片
openai.Image.create_edit(
  image=open("小猫.png", "rb"),
  mask=open("mask_512.png", "rb"),
  prompt="小猫\趴着炕头上",
  n=1,
  size="512x512"
)

Seis: ejemplos de aplicación

6.1 Crear un asistente de respuesta a preguntas de programación

Comparte un ejemplo para darte algunas ideas, el código es el siguiente:

def programming_helper(question:str='Python中如何声明变量?'):
    prompt = "你是一个编程问题解答助手,每当用户向你提出一个编程相关的问题,你都应尝试提供相关答案。" \
             "如果问题太复杂或超出了你的知识范围,请回复 '建议查阅更详细的资料或论坛。'"

    response = "Python中如何打印内容?" \
                             "\n\n你可以使用Python的print()函数来显示输出。例如:" \
                             "\n\nprint('你好,世界!') 将在屏幕上显示 '你好,世界!'。"

    data = {
    
    
            "model": "gpt-3.5-turbo-16k-0613",
            "temperature": 0,
            "top_p": 1,
            "frequency_penalty": 1,
            "presence_penalty": 1,
            "stream": False,
            "messages": [
                {
    
    "role": "system", "content": prompt},
                {
    
    "role": "user", "content": "Python中如何打印内容?"},
                {
    
    "role": "assistant", "content": response},
                {
    
    "role": "user", "content": question}
            ]
        }

    
    return openai.ChatCompletion.create(**data)

# 示例
helper_response = programming_helper(question='Python中如何使用for循环?')

Llame para ver el resultado:

inserte la descripción de la imagen aquí

Este método consiste en solicitar el contenido de Pocas tomas del proyecto, no importa si no lo comprende aquí, se discutirá en los siguientes artículos.

6.2 Calcular los Tokens consumidos

La llamada a la interfaz API se cobra mediante tokens, entonces, ¿cómo calcular cuántos tokens se utilizan para cada sesión?

# !pip install tiktoken
import tiktoken

MODEL_NAME = "gpt-3.5-turbo-16k-0613"
encoder = tiktoken.encoding_for_model(MODEL_NAME)

def calculate_and_display_token_count(input_text:str):
    encoded_text = encoder.encode(input_text)
    token_count = len(encoded_text)
    
    print(f"输入的文本: '{
      
      input_text}'")
    print(f"对应的编码: {
      
      encoded_text}")
    print(f"Token数量: {
      
      token_count}")

calculate_and_display_token_count(input_text='测试Token大小')

El resultado es el siguiente:
imagen-20230810120608992
si es necesario, se pueden agregar funciones como el cálculo de tarifas de acuerdo con la tarifa de cada API.

7. Resumen

Este artículo aclara cómo obtener y almacenar claves API y realizar una prueba de conectividad para garantizar un uso normal. Luego, se introducen los parámetros básicos de la API de OpenAI, especialmente para las interfaces de GPT3.5 y GPT4, se explican en profundidad los métodos de uso de varias API, incluidos los métodos de llamada básicos de Finalizaciones, Finalizaciones de chat e Imágenes, y rondas múltiples. se implementan para finalizar el chat. El diálogo proporciona ideas. En la sección de ejemplo de aplicación, se proporciona cómo crear un asistente de respuesta a preguntas de programación y cómo calcular los Tokens consumidos.

¡Gracias por leer este artículo! Si sientes que has ganado algo, no olvides darle me gusta, marcarlo y seguirme, esta es la motivación para mi creación continua. Si tiene alguna pregunta o sugerencia, puede dejar un mensaje en el área de comentarios, haré todo lo posible para responder y aceptar sus comentarios. Si hay un tema en particular que le gustaría conocer, hágamelo saber y estaré encantado de escribir un artículo al respecto. ¡Gracias por su apoyo y esperamos crecer con usted!

Por último, ¡dales a todos productos secos! Se recomienda que a todos les guste y marquen, Mark no lo pierda. ¡Hay materiales de alta calidad gratis!

1. Lo que necesitas saber sobre la magia

2. ¡Proceso súper completo! ¡El registro de cuenta OpenAI está aquí!

3. Guía de actualización de ChatGPT Plus

Supongo que te gusta

Origin blog.csdn.net/Lvbaby_/article/details/131741328
Recomendado
Clasificación