Este es un envoltorio API de ingeniería inversa para el patio de juegos Vercel AI, que permite el acceso gratuito a muchos LLM, incluidos los chatgpt de OpenAI, el comando de Cohere's Nightly, así como algunos modelos de código abierto.
Tabla de contenido generado con Markdown-Toc.
Puede instalar esta biblioteca ejecutando el siguiente comando:
pip3 install vercel-llm-api
Se pueden encontrar ejemplos en el directorio /examples . Para ejecutar estos ejemplos, simplemente ejecute los archivos de Python incluidos desde su terminal.
python3 examples/generate.py
Para usar esta biblioteca, simplemente importe vercel_ai y cree una instancia vercel_ai.Client . Puede especificar un proxy utilizando el argumento de palabras clave proxy .
Ejemplo normal:
import vercel_ai
client = vercel_ai . Client ()Ejemplo proxizado:
import vercel_ai
client = vercel_ai . Client ( proxy = "socks5h://193.29.62.48:11003" ) Tenga en cuenta que los siguientes ejemplos suponen que client es el nombre de su instancia vercel_ai.Client .
El cliente descarga los modelos disponibles tras la inicialización y los almacena en client.models .
>> > print ( json . dumps ( client . models , indent = 2 ))
{
"anthropic:claude-instant-v1" : {
"id" : "anthropic:claude-instant-v1" , #the model's id
"provider" : "anthropic" , #the model's provider
"providerHumanName" : "Anthropic" , #the provider's display name
"makerHumanName" : "Anthropic" , #the maker of the model
"minBillingTier" : "hobby" , #the minimum billing tier needed to use the model
"parameters" : { #a dict of optional parameters that can be passed to the generate function
"temperature" : { #the name of the parameter
"value" : 1 , #the default value for the parameter
"range" : [ 0 , 1 ] #a range of possible values for the parameter
},
...
}
...
}
} Tenga en cuenta que, dado que aún no hay autenticación, si un modelo tiene la propiedad "minBillingTier" presente, no se puede usar.
Una lista de ID de modelo también está disponible en client.model_ids .
>> > print ( json . dumps ( client . model_ids , indent = 2 ))
[
"anthropic:claude-instant-v1" , #locked to hobby tier; unusable
"anthropic:claude-v1" , #locked to hobby tier; unusable
"replicate:replicate/alpaca-7b" ,
"replicate:stability-ai/stablelm-tuned-alpha-7b" ,
"huggingface:bigscience/bloom" ,
"huggingface:bigscience/bloomz" ,
"huggingface:google/flan-t5-xxl" ,
"huggingface:google/flan-ul2" ,
"huggingface:EleutherAI/gpt-neox-20b" ,
"huggingface:OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5" ,
"huggingface:bigcode/santacoder" ,
"cohere:command-medium-nightly" ,
"cohere:command-xlarge-nightly" ,
"openai:gpt-4" , #locked to pro tier; unusable
"openai:code-cushman-001" ,
"openai:code-davinci-002" ,
"openai:gpt-3.5-turbo" ,
"openai:text-ada-001" ,
"openai:text-babbage-001" ,
"openai:text-curie-001" ,
"openai:text-davinci-002" ,
"openai:text-davinci-003"
] Se puede encontrar un dict de parámetros predeterminados para cada modelo en client.model_params .
>> > print ( json . dumps ( client . model_defaults , indent = 2 ))
{
"anthropic:claude-instant-v1" : {
"temperature" : 1 ,
"maximumLength" : 200 ,
"topP" : 1 ,
"topK" : 1 ,
"presencePenalty" : 1 ,
"frequencyPenalty" : 1 ,
"stopSequences" : [
" n n Human:"
]
},
...
} Para generar algún texto, use la función client.generate , que acepta los siguientes argumentos:
model : la identificación del modelo que desea usar.prompt : su aviso.params = {} - Un dict de parámetros opcionales. Consulte la sección anterior para ver cómo encontrarlos.La función es un generador que devuelve el texto recién generado como una cadena.
Ejemplo transmitido:
for chunk in client . generate ( "openai:gpt-3.5-turbo" , "Summarize the GNU GPL v3" ):
print ( chunk , end = "" , flush = True )Ejemplo no transmitido:
result = ""
for chunk in client . generate ( "openai:gpt-3.5-turbo" , "Summarize the GNU GPL v3" ):
result += chunk
print ( result ) Para generar mensajes de chat, use la función client.chat , que acepta los siguientes argumentos:
model : la identificación del modelo que desea usar.messages : una lista de mensajes. El formato para esto es idéntico a cómo usaría la API oficial de OpenAI.params = {} - Un dict de parámetros opcionales. Consulte la sección "Descargar los modelos disponibles" para ver cómo encontrarlos.La función es un generador que devuelve el texto recién generado como una cadena.
messages = [
{ "role" : "system" , "content" : "You are a helpful assistant." },
{ "role" : "user" , "content" : "Who won the world series in 2020?" },
{ "role" : "assistant" , "content" : "The Los Angeles Dodgers won the World Series in 2020." },
{ "role" : "user" , "content" : "Where was it played?" }
]
for chunk in client . chat ( "openai:gpt-3.5-turbo" , messages ):
print ( chunk , end = "" , flush = True )
print () Si desea mostrar los mensajes de depuración, simplemente llame vercel_ai.logger.setLevel .
import vercel_ai
import logging
vercel_ai . logger . setLevel ( logging . INFO )Este programa tiene licencia bajo el GNU GPL V3. Todo el código ha sido escrito por mí, Ading2210.
ading2210/vercel-llm-api: a reverse engineered API wrapper for the Vercel AI Playground
Copyright (C) 2023 ading2210
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.