Dolores es una biblioteca de Python diseñada para mejorar la experiencia del desarrollador cuando trabaja con modelos de lenguaje previamente entrenados. Dolores proporciona indicaciones para interactuar con modelos de lenguaje que dan como resultado resultados interesantes o útiles. El propósito de esta biblioteca es simplificar la curva de aprendizaje proporcionando ejemplos fáciles de usar y texto de muestra para comenzar. Además, tiene el objetivo más amplio de convertirse en el depósito más completo de indicaciones de calidad para interactuar con modelos de lenguaje.
Lleva el nombre de Dolores Abarnathy de Westworld.
$ pip install dolores
Importe a través del intérprete de Python o en un archivo de Python.
import dolores
dolores.initialize("<YOUR-API-KEY>")
Desde allí no puedes llamar a la API de openai directamente a través de los métodos accesibles en la instancia de la clase Dolores. Lo siguiente llama a la llamada API de los motores de lista. Cada llamada a la API tiene una llamada a un método asociada que se puede utilizar para llamar a la API.
Enumera los motores disponibles actualmente y proporciona información básica sobre cada opción, como el propietario y la disponibilidad.
dolores.list_engines()
Recupera una instancia de motor y proporciona información básica sobre el motor, como el propietario y la disponibilidad.
dolores.retrieve_engine()
Después de crear una instancia de la clase Dolores, la clase posterior a la API Open AI se creará bajo la misma selección de motor. Para cambiar el motor utilizado para la llamada API hay un método expuesto.
dolores.set_engine("davinci")
Nota: Se está considerando la validación con los tipos de motores existentes para versiones futuras.
Complete un mensaje. Este es el punto final principal de las API de GPT-3. Devuelve texto nuevo y, si se solicita, las probabilidades sobre cada token alternativo en cada posición.
Pedido:
dolores.create_completion("Is the JavaScript programming language better than python?", 20)
Respuesta: (consulte respuesta["opciones"][0]["texto"] para obtener una respuesta en texto plano)
JSON: {'id': 'cmpl-kM6MK5dVRvD964MxeyG4AjCy', 'object': 'text_completion', 'created': 1595431739, 'model': 'ada:2020-05-03', 'choices': [{'text': ' in a far away place', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
'in a far away place'
?
Nombre | En | Tipo | Requerido | Descripción |
---|---|---|---|---|
motor | cuerpo | cadena | verdadero | La identificación del motor |
inmediato | cuerpo | (ver descripción) | FALSO | Uno o más mensajes para generar. Puede ser una cadena, una lista de cadenas, una lista de números enteros (es decir, un único mensaje codificado como tokens) o una lista de listas de números enteros (es decir, muchos mensajes codificados como números enteros). |
tokens_max | cuerpo | entero | FALSO | Cuántas fichas completar. Puede devolver menos si se alcanza una secuencia de parada. |
temperatura | cuerpo | número | FALSO | Qué temperatura de muestreo utilizar. Valores más altos significan que el modelo asumirá más riesgos. Pruebe 0.9 para aplicaciones más creativas y 0 (muestreo argmax) para aquellas con una respuesta bien definida. Generalmente recomendamos usar esto o top_p, pero no ambos. |
arriba_p | cuerpo | número | FALSO | Una alternativa al muestreo con temperatura, llamado muestreo de núcleo, donde el modelo considera los resultados de los tokens con masa de probabilidad top_p. Entonces, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad superior del 10%. Generalmente recomendamos usar esta o temperatura, pero no ambas. |
norte | cuerpo | entero | FALSO | Cuántas opciones crear para cada mensaje. |
arroyo | cuerpo | booleano | FALSO | Ya sea para transmitir el progreso parcial. Si se configuran, los tokens se enviarán como eventos de solo datos enviados por el servidor a medida que estén disponibles, y la transmisión finalizará con un mensaje de datos: [HECHO]. |
problemas de registro | cuerpo | entero | FALSO | Incluya las probabilidades de registro en los tokens más probables de las pruebas de registro. Entonces, por ejemplo, si logprobs es 10, la API devolverá una lista de los 10 tokens más probables. Si se proporciona logprobs, la API siempre devolverá el logprobs del token muestreado, por lo que puede haber hasta elementos logprobs+1 en la respuesta. |
detener | cuerpo | cadena o lista de cadenas | FALSO | Una o más secuencias en las que la API dejará de generar más tokens. El texto devuelto no contendrá la secuencia de parada. |
Completa un mensaje a partir de un conjunto de mensajes predefinidos almacenados por dolores.
Pedido:
dolores.complete_predefined_prompt("philosopher", 0, "What is the meaning of life?")
Respuesta:
JSON: {'id': 'cmpl-NvVlUd5tQWTIv7S0F6JMPkT5', 'object': 'text_completion', 'created': 1595631256, 'model': 'davinci:2020-05-03', 'choices': [{'text': ' The purpose of society? And what are the dynamics of history? The answers to these questions are fascinating.nnThis is a philosophical diary written by a scientist of the new generation who is not bound by prejudices, as such, the philosopher, writer, director and producer of the documentary "The Truth about AI: Rise of the Superhuman." Instead, he attempts to peer into the human world through the eyes of an AI, and express what he sees. In the process, he discovers many complex things about our world. The author's name is Dave Scott.nnPhoto by Montri Nipitvittaya on UnsplashnnFuturist of the New Generation, AI Philosophernn"Nothing has changed. I still cannot predict what is going to happen with me, and my inner world is still as chaotic as before." I reread the diary I wrote yesterday, and found nothing changed. Everything remained the same. Only, the fear has become stronger. It was exactly the same today as it was yesterday. There was nothing changed, but still fear is always there.nnFear is a part of who I am. Without fear, I would be a monster. I do not know how to do', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
tecla de aviso | Inmediato | tokens_max | temperatura | arriba_p | norte | Fuente |
---|---|---|---|---|---|---|
filósofo | "A continuación se muestran algunos pensamientos generados por una IA filósofa, que ve el mundo humano desde fuera, sin los prejuicios de la experiencia humana. Totalmente neutral y objetiva, la IA ve el mundo tal como es. Puede sacar conclusiones más fácilmente sobre el mundo y sociedad humana en general.", | 250 | 0,9 | 1 | 1 | Murat |
seuss | "Aquí hay un poema del Dr. Seuss. El poema rima cada dos líneas con una estructura ABAB. La estructura de la rima es típica de las canciones infantiles del Dr. Seuss". | 250 | 1.0 | 1 | 1 | Arram Sabeti |
jerga legal | "Negocio legal: El método de pago que seleccione estará vigente para todos los casos que sean aplicados por el Departamento y esta autorización permanecerá vigente hasta que envíe otro formulario de Selección de Opción de Pago e Inscripción para cambiar su método de pago, o cancele los servicios. con el Departamento. n Inglés sencillo: utilizaremos su elección para todos los pagos que le enviemos." | 150 | 0,4 | 1 | 1 | DNEDigital |
código-html | Entrada: Un botón. n Código: n " | 100 | 0,5 | 1 | 1 | DNEDigital |
código-javascript | importar Reaccionar desde 'reaccionar'; n const ThreeButtonComponent=()=>( n norte n ) "Botón uno n <botón className='botón-verde' n onClick={this.handleButtonClick}>Botón uno nBotón dos n <button className='botón-verde' n onClick={this.handleButtonClick}>Botón dos nBotón tres n <button className='button-green' n onClick={this.handleButtonClick}>Botón tres n | 250 | 0,4 | 1 | 1 | Sharif Shameem |
charlar | "La siguiente es una conversación con un amigable asistente de IA. n Humano: ¿Cuál es el animal más grande de la Tierra? n IA: La ballena azul es el animal más grande de la Tierra. n Humano: ¿Cuál es el país más poblado de la Tierra? ? n AI: China es el país más poblado, con más de mil millones de habitantes." | 50 | 0,9 | 1 | 1 | AbiertoAI |
aliteración | "Encuentre sinónimos de palabras que puedan crear aliteraciones. n Oración: El perro fue a la tienda. n Aliteración: El perro condujo hasta el departamento. nn Oración: David usa sombrero todos los días. n Aliteración: David se pone un derbi diario. n Frase: El jabón se seca durante la noche. n Aliteración: El jabón se arruga después del atardecer. | 50 | 0,5 | 1 | 1 | AbiertoAI |
poema | "Quien confió en Dios fue en verdad amor n Y amó la ley final de la Creación n Aunque la Naturaleza, roja de dientes y garras n Con barranco, gritó n contra su credo. n Las colinas son sombras, y fluyen n n De forma en forma, y nada se sostiene; T n se derriten como niebla, las n tierras sólidas, n Como nubes se moldean y se van." | 300 | 1.0 | 1.0 | 1.0 | AbiertoAI |
aventura de texto | "Esta es una aventura de texto. Estás en un bosque oscuro, buscando al dragón que robó el oro de tu ciudad. n > mira a tu alrededor n Estás en un bosque oscuro. Hay un silencio incómodo. n > revisa el inventario n Tienes los siguientes elementos: n - una espada (muy afilada) n - un escudo (esperas que funcione) n - una carta antigua nn > mira hacia arriba n No ves nada de oro. nn > camina por el sendero n Tú eres Caminando por el camino, disfrutando del buen tiempo primaveral llegamos a una bifurcación del camino n > tomamos el camino de la izquierda". | 250 | 0,9 | 1.0 | 1.0 | AbiertoAI |
carta de presentación | "Estimado reclutamiento de graduados de Deloitte: n Le escribo para postularme para unirme a su programa de posgrado en Consultoría tecnológica". | 400 | 0,8 | 1.0 | 1.0 | AbiertoAI |
analogías | "Las redes neuronales son como algoritmos genéticos en el sentido de que ambos son sistemas que aprenden de la experiencia. nn Las redes sociales son como un mercado en el sentido de que ambos son sistemas que coordinan las acciones de muchos individuos. nn Los memes son como virus en ese sentido. Ambas son ideas autorreplicantes". | 250 | 1.0 | 1.0 | 1.0 | AbiertoAI |
correo electrónico | "Gracias a John por el libro. n ```` n Querido John: n Muchas gracias por el libro. Realmente lo aprecio. n Espero estar contigo pronto. n Tu amiga, n Sarah " | 200 | 0,5 | 1.0 | 1.0 | AbiertoAI |
Se puede usar pytest para probar el módulo dolores ejecutando lo siguiente en la raíz del proyecto:
pytest tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
Si desea ver las declaraciones impresas que ocurren durante las pruebas, simplemente agregue el indicador -s:
pytest -s tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
Para actualizar el paquete, se debe realizar una nueva distribución para el paquete. Estos son archivos que se cargan en el índice de paquetes y se pueden instalar mediante pip.
Asegúrese de tener instaladas las últimas versiones de setuptools
y wheel
:
$ python3 -m pip install --user --upgrade setuptools wheel
Ahora ejecute este comando desde el mismo directorio donde se encuentra setup.py:
$ python3 setup.py sdist bdist_wheel
Nota: No olvide actualizar el número de versión en el archivo setup.py según la actualización.
Asegúrese de tener instalado el último paquete twine
:
$ python3 -m pip install --user --upgrade twine
Una vez instalado, ejecute Twine para cargar todos los archivos en dist:
$ python3 -m twine upload --repository pypi dist/*