Guía del usuario de la API de Ollama
Tutoriales prácticos sobre IAPublicado hace 5 meses Círculo de intercambio de inteligencia artificial 1.5K 00
breve
Ollama Se proporciona una potente API REST para que los desarrolladores puedan interactuar fácilmente con grandes modelos lingüísticos. A través de la API de Ollama, los usuarios pueden enviar peticiones y recibir respuestas generadas por el modelo, aplicadas a tareas como el procesamiento del lenguaje natural, la generación de textos, etc. En este artículo, se describen en detalle las operaciones básicas de generación de complementos y generación de diálogos, y también se explican operaciones comunes como la creación de modelos, la copia de modelos y la eliminación de modelos.
punto de partida o de llegada (en historias, etc.)
Completar respuesta \ Completar diálogo \ Crear modelo \ Copiar modelo \ Eliminar modelo \ Listar modelos en ejecución \ Listar modelos locales \ Mostrar información del modelo \ Extraer modelos \ Empujar modelos \ Generar incrustación
I. Completar la respuesta
POST /api/generate
Genera una respuesta a una solicitud dada utilizando el modelo especificado. Este es un endpoint de streaming, por lo que habrá una serie de respuestas. El objeto de respuesta final incluirá estadísticas y otros datos de la solicitud.
parámetros
model
(Obligatorio) Nombre del modeloprompt
Consejo para generar una respuestasuffix
Texto tras la respuesta del modeloimages
: (Opcional) una lista de imágenes codificadas en base64 (para modelos multimodales comollava
)
Parámetros avanzados (opcional):
format
: Devuelve el formato de la respuesta. El único valor aceptado actualmente esjson
options
Otros parámetros del modelo, comotemperature
yseed
et al. (y otros autores)system
: Mensajes del sistematemplate
Plantilla de aviso a utilizarcontext
:: De la anterior reseña de/generate
Los parámetros contextuales devueltos en la solicitud pueden utilizarse para mantener una breve memoria de diálogo delstream
Si se establece enfalse
La respuesta se devolverá como un único objeto de respuesta en lugar de como un flujo de objetos.raw
Si se establece entrue
no se formateará el mensaje. Si especifica una solicitud de plantilla completa al solicitar la API, puede utilizar opcionalmente la opciónraw
parámetroskeep_alive
: Controla el tiempo que el modelo permanece en memoria tras una petición (por defecto:5m
)
Ejemplo de solicitud (streaming)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'
Consejo
Si utiliza el curl
descargue curl para WindowsPara añadir variables de entorno, extraiga el archivo, busque el subarchivo bin en el directorio donde se encuentra el archivo y copie la dirección del archivo para añadir las variables de entorno.
Utilice el siguiente comando en una ventana de línea de comandos (no en PowerShell) para comprobar si se ha añadido correctamente.
curl --help
Se muestra lo siguiente para indicar que la adición se ha realizado correctamente.

Consejo
En una ventana de línea de comandos de Windows, utilice el comando curl
Al solicitar comandos, tenga en cuenta el uso de comillas dobles escapadas. A continuación se ofrecen ejemplos de comandos.
curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"
La siguiente pantalla indica que la solicitud se ha realizado correctamente.

Ejemplo de respuesta
El retorno es un flujo de objetos JSON:
{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}
La respuesta final del flujo también incluye datos adicionales sobre la generación:
- contexto: el código de diálogo utilizado para esta respuesta, que puede enviarse en la siguiente solicitud para mantener el diálogo en memoria
- duración_total: tiempo empleado en generar la respuesta (en nanosegundos)
- duración_carga: tiempo necesario para cargar el modelo (en nanosegundos)
- prompt_eval_count: número de tokens en el prompt
- prompt_eval_duration: tiempo necesario para evaluar la solicitud (en nanosegundos)
- eval_count: número de tokens en la respuesta
- eval_duration: tiempo necesario para generar la respuesta (en nanosegundos)
- response: null si la respuesta es streaming, si no, contendrá la respuesta completa Para calcular la tasa de generación de respuestas (número de tokens generados por segundo, tokens/s), es decir
eval_count
/eval_duration
* 10^9.
Respuesta final:
{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:10.819603411Z",
"response":"",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":8655401792,
"load_duration":5924129727,
"prompt_eval_count":17,
"prompt_eval_duration":29196000,
"eval_count":118,
"eval_duration":2656329000
}
Juego avanzado
salida sin flujo
comandante en jefe (militar) stream
ajustado a false
puede recibir todas las respuestas a la vez.
Ejemplo de solicitud
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'
Ejemplo de respuesta
{
"model":"llama3.1",
"created_at":"2024-08-08T07:13:34.418567351Z",
"response":"答案:叶子含有大量的叶绿素。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2902435095,
"load_duration":2605831520,
"prompt_eval_count":17,
"prompt_eval_duration":29322000,
"eval_count":13,
"eval_duration":266499000
}
Modo JSON
(coll.) suspender (a un estudiante) format
ajustado a json
La salida estará en formato JSON. Tenga en cuenta, sin embargo, que el prompt
El modelo tiene instrucciones de responder en formato JSON, de lo contrario el modelo puede generar un gran número de espacios.
Ejemplo de solicitud
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'
Ejemplo de respuesta
{
"model":"llama3.1",
"created_at":"2024-08-08T07:21:24.950883454Z",
"response":"{\n \"颜色原因\": \"叶子中含有光合作用所需的叶绿素\",\n \"作用\": \"进行光合作用吸收太阳能\"\n}",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":3492279981,
"load_duration":2610591203,
"prompt_eval_count":22,
"prompt_eval_duration":28804000,
"eval_count":40,
"eval_duration":851206000
}
response
será una cadena que contiene JSON similar a la siguiente:
{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}
La entrada contiene imágenes
Para añadir un nuevo modelo a un modelo multimodal (por ejemplo llava
tal vez bakllava
Para enviar una imagen, proporcione una versión codificada en base64 del archivo images
Lista:
Ejemplo de solicitud
curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["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"
]
}'
Ejemplo de respuesta
{
"model":"llava",
"created_at":"2024-08-08T07:33:55.481713465Z",
"response":" The image shows a cartoon of an animated character that resembles a cute pig with large eyes and a smiling face. It appears to be in motion, indicated by the lines extending from its arms and tail, giving it a dynamic feel as if it is waving or dancing. The style of the image is playful and simplistic, typical of line art or stickers. The character's design has been stylized with exaggerated features such as large ears and a smiling expression, which adds to its charm. ",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2960501550,
"load_duration":4566012,
"prompt_eval_count":1,
"prompt_eval_duration":758437000,
"eval_count":108,
"eval_duration":2148818000
}
resultados reproducibles
comandante en jefe (militar) seed
Establezca un valor fijo para obtener una salida reproducible:
Ejemplo de solicitud
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'
Ejemplo de respuesta
{
"model":"llama3.1",
"created_at":"2024-08-08T07:42:28.397780058Z",
"response":"答案:因为叶子中含有大量的氯离子。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":404791556,
"load_duration":18317351,
"prompt_eval_count":17,
"prompt_eval_duration":22453000,
"eval_count":16,
"eval_duration":321267000}
II. Finalización del diálogo
POST /api/chat
Genera el siguiente mensaje en el chat utilizando el modelo especificado. Este es también un endpoint de streaming, por lo que habrá una serie de respuestas. Si el "stream"
ajustado a false
se puede desactivar el streaming. El objeto de respuesta final incluirá las estadísticas solicitadas y datos adicionales.
parámetros
model
(Obligatorio) Nombre del modelomessages
: Mensajes de chat, que pueden utilizarse para guardar un recuerdo de la charlatools
El modelo admite el uso de herramientas. Se requiere que elstream
ajustado afalse
message
El objeto tiene los siguientes campos:
role
El papel del mensaje, que puede sersystem
yuser
yassistant
tal veztool
content
Contenido del mensajeimages
(opcional): una lista de imágenes que se incluirán en el mensaje (para mensajes comollava
(Modelos multimodales como éstos)tool_calls
(Opcional): lista de herramientas que el modelo desea utilizar
Parámetros avanzados (opcional):
format
: Devuelve el formato de la respuesta. El único valor aceptado actualmente esjson
options
Otros parámetros del modelo, comotemperature
yseed
et al. (y otros autores)stream
Si parafalse
La respuesta se devolverá como un único objeto de respuesta en lugar de como un flujo de objetos.keep_alive
: Controla el tiempo que el modelo permanece cargado en memoria tras una solicitud (por defecto:5m
)
Ejemplo de solicitud (streaming)
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'
Ejemplo de respuesta
Devuelve un flujo de objetos JSON:
{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}
Respuesta final:
{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:37.187621765Z",
"message":{
"role":"assistant",
"content":""
},
"done_reason":"stop",
"done":true,
"total_duration":5730533217,
"load_duration":5370535786,
"prompt_eval_count":17,
"prompt_eval_duration":29621000,
"eval_count":13,
"eval_duration":273810000
}
Juego avanzado
Configuración de parámetros para salida sin flujo, modo JSON, entrada multimodal, salida reproducible y 回答API
de coherencia.
Con la historia
Enviar mensajes de chat con historial de diálogo. Se pueden iniciar varias rondas de diálogo o cadenas de pensamiento con el mismo método.
Ejemplo de solicitud
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'
Ejemplo de respuesta
{
"model":"llama3.1",
"created_at":"2024-08-08T07:53:28.849517802Z",
"message":{
"role":"assistant",
"content":"这是一个更复杂的问题!\n\n叶绿素是一种称为黄素的色素,这些色素可以吸收光能。在日光下,绿色草叶中的叶绿素会吸收蓝光和红光,但反射出黄色和绿色的光,所以我们看到草看起来是绿色的。\n\n简单来说,叶绿素让草看起来是绿色的,因为它反射了我们的眼睛可以看到的绿光,而不反射我们看到的其他颜色。"
},
"done_reason":"stop",
"done":true,
"total_duration":5065572138,
"load_duration":2613559070,
"prompt_eval_count":48,
"prompt_eval_duration":37825000,
"eval_count":106,
"eval_duration":2266694000}
III. Creación de modelos
POST /api/create
recomendaciones generales modelfile
con el contenido del archivo de modelo, en lugar de establecer simplemente el parámetro path
Creación remota de modelos. La creación de modelos remotos también debe crear explícitamente todos los blobs de archivos, campos (como el campo FROM
responder cantando ADAPTER
) y establecer el valor en la ruta indicada en la respuesta.
parámetros
name
Nombre del modelo a crearmodelfile
(opcional): contenido del archivo de modelostream
(opcional): si parafalse
La respuesta se devolverá como un único objeto de respuesta, no como un flujo de objetos.path
(Opcional): Ruta al archivo de modelo.
Ejemplo de solicitud
curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'
Ejemplo de respuesta
Una cadena de objetos JSON. Observe que el objeto JSON final muestra "status": "success"
Se ha creado correctamente.
{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"using already created layer sha256:22f7f8ef5f4c791c1b03d7eb414399294764d7cc82c7e94aa81a1feb80a983a2"}
{"status":"using already created layer sha256:8c17c2ebb0ea011be9981cc3922db8ca8fa61e828c5d3f44cb6ae342bf80460b"}
{"status":"using already created layer sha256:7c23fb36d80141c4ab8cdbb61ee4790102ebd2bf7aeff414453177d4f2110e5d"}
{"status":"using already created layer sha256:2e0493f67d0c8c9c68a8aeacdf6a38a2151cb3c4c1d42accf296e19810527988"}
{"status":"using already created layer sha256:2759286baa875dc22de5394b4a925701b1896a7e3f8e53275c36f75a877a82c9"}
{"status":"writing layer sha256:df30045fe90f0d750db82a058109cecd6d4de9c90a3d75b19c09e5f64580bb42"}
{"status":"writing layer sha256:f18a68eb09bf925bb1b669490407c1b1251c5db98dc4d3d81f3088498ea55690"}
{"status":"writing manifest"}
{"status":"success"}
Comprobar si el Blob existe
HEAD /api/blobs/:digest
Asegúrese de que el archivo blob para el campo FROM o ADAPTER existe en el servidor. Esto está comprobando su servidor Ollama y no Ollama.ai.
Parámetros de consulta
digest
Resumen SHA256 del blob
Ejemplo de solicitud
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Ejemplo de respuesta
Devuelve "200 OK" si el blob existe, o "404 Not Found" en caso contrario.
Creación de un Blob
POST /api/blobs/:digest
Crea un blob a partir de un archivo del servidor. Devuelve la ruta del archivo del servidor.
Parámetros de consulta
digest
Resumen SHA256 previsto del documento
Ejemplo de solicitud
curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Ejemplo de respuesta
Devuelve 201 Created si el blob se ha creado correctamente, o 400 Bad Request si el resumen utilizado no es el esperado.
IV. Modelos de réplica
POST /api/copy
Duplicar un modelo, utilizando otro nombre para duplicar un modelo existente.
Ejemplo de solicitud
curl http://localhost:11434/api/copy -d '{
"source": "llama3.1",
"destination": "llama3-backup"
}'
Ejemplo de respuesta
Devuelve "200 OK" si tiene éxito, o "404 Not Found" si el modelo de origen no existe.
V. Supresión de modelos
DELETE /api/delete
Elimina el modelo y sus datos.
parámetros
name
Nombre del modelo que debe suprimirse
Ejemplo de solicitud
[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.%20Ollama%20API%20%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md#%E7%A4%BA%E4%BE%8B%E8%AF%B7%E6%B1%82-4)curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'
Ejemplo de respuesta
Devuelve "200 OK" si tiene éxito, o "404 Not Found" si el modelo a borrar no existe.
VI. Listado de modelos operativos
GET /api/ps
Lista los modelos actualmente cargados en memoria.
Ejemplo de solicitud
curl http://localhost:11434/api/ps
Ejemplo de respuesta
{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"size":6654289920,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"expires_at":"2024-08-08T14:06:52.883023476+08:00",
"size_vram":6654289920
}
]
}
VII. Listado de modelos locales
GET /api/tags
Enumera los modelos disponibles localmente.
Ejemplo de solicitud
curl http://localhost:11434/api/tags
Ejemplo de respuesta
{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"modified_at":"2024-08-07T17:54:22.533937636+08:00",
"size":4661230977,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
}
}
]
}
VIII. Visualización de la información del modelo
POST /api/show
Muestra información sobre el modelo, incluidos detalles, archivo de modelo, plantillas, parámetros, licencias y sugerencias del sistema.
parámetros
name
Nombre del modelo a mostrarverbose
(Opcional): Si se establece entrue
y, a continuación, devuelve los datos completos del campo Respuesta detallada
Ejemplo de solicitud
curl http://localhost:11434/api/show -d '{
"name": "llama3.1"
}'
Ejemplo de respuesta
{
"license":"...",
"modelfile":"...",
"parameters":"...",
"template":"...",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"model_info":{
"general.architecture":"llama",
"general.basename":"Meta-Llama-3.1",
"general.file_type":2,
"general.finetune":"Instruct",
"general.languages":["en","de","fr","it","pt","hi","es","th"],
"general.license":"llama3.1",
"general.parameter_count":8030261312,
"general.quantization_version":2,
"general.size_label":"8B",
"general.tags":["facebook","meta","pytorch","llama","llama-3","text-generation"],
"general.type":"model",
"llama.attention.head_count":32,
"llama.attention.head_count_kv":8,
"llama.attention.layer_norm_rms_epsilon":0.00001,
"llama.block_count":32,
"llama.context_length":131072,
"llama.embedding_length":4096,
"llama.feed_forward_length":14336,
"llama.rope.dimension_count":128,
"llama.rope.freq_base":500000,
"llama.vocab_size":128256,
"tokenizer.ggml.bos_token_id":128000,
"tokenizer.ggml.eos_token_id":128009,
"tokenizer.ggml.merges":null,
"tokenizer.ggml.model":"gpt2",
"tokenizer.ggml.pre":"llama-bpe",
"tokenizer.ggml.token_type":null,
"tokenizer.ggml.tokens":null
},
"modified_at":"2024-08-07T17:54:22.533937636+08:00"
}
IX. Modelos de extracción
POST /api/pull
a través de (un hueco) ollama
Modelo de descarga de bibliotecas. Una operación pull interrumpida continuará la descarga desde el punto de interrupción, y múltiples llamadas compartirán el mismo progreso de descarga.
parámetros
name
Nombre del modelo a extraerinsecure
(Opcional): permite conexiones inseguras a bibliotecas. Se recomienda utilizar esta opción sólo cuando se extrae de sus propias bibliotecas durante el desarrollo.stream
(opcional): si parafalse
La respuesta se devolverá como un único objeto de respuesta, no como un flujo de objetos.
Ejemplo de solicitud
curl http://localhost:11434/api/pull -d '{
"name": "llama3.1"
}'
Ejemplo de respuesta
en caso de que stream
No especificado o ajustado a true
se devuelve una cadena de objetos JSON:
El primer objeto es la lista:
{
"status": "pulling manifest"
}
Luego hay una serie de respuestas de descarga. Hasta que se complete la descarga, no puede contener completed
clave. El número de ficheros a descargar depende del número de capas especificadas en la lista.
{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}
La respuesta final una vez descargados todos los archivos es:
{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}
en caso de que stream
es falso, la respuesta es un único objeto JSON:
{
"status": "success"
}
X. Modelo de empuje
POST /api/push
Sube el modelo al repositorio de modelos. Primero tienes que registrar ollama.ai y añadir una clave pública.
parámetros
name
: el nombre del modelo que se va a empujar, en el formato de<namespace>/<model>:<tag>
insecure
(Opcional): Permitir conexiones inseguras a las bibliotecas. Utilice esta opción sólo cuando empuje a sus propias bibliotecas durante el desarrollo.stream
(opcional): si parafalse
La respuesta se devolverá como un único objeto de respuesta, no como un flujo de objetos.
Ejemplo de solicitud
curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'
Ejemplo de respuesta
en caso de que stream
No especificado o ajustado a true
se devuelve una cadena de objetos JSON:
{ "status": "retrieving manifest" }
A continuación, una serie de respuestas de carga:
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}
Por último, cuando se haya completado la carga:
{"status":"pushing manifest"}
{"status":"success"}
en caso de que stream
ajustado a false
Si la respuesta es un único objeto JSON, entonces la respuesta es un único objeto JSON:
{ "status": "success" }
XI. Generación de incrustaciones
POST /api/embed
Generación de incrustaciones a partir de modelos.
parámetros
model
Nombre del modelo a partir del cual se generará la incrustacióninput
Para generar texto incrustado o una lista de texto
Parámetros avanzados:
truncate
Trunca el final de cada entrada para ajustarlo a la longitud del contexto. Esto no es un problema si es el caso defalse
y excede la longitud del contexto, se devuelve un error. El valor por defecto estrue
options
Otros parámetros del modelo, comotemperature
yseed
et al. (y otros autores)keep_alive
: Controla el tiempo que el modelo permanece cargado en memoria tras una solicitud (por defecto:5m
)
Ejemplo de solicitud
curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'
Ejemplo de respuesta
{
"model":"llama3.1",
"embeddings":[[
-0.008059342,-0.013182715,0.019781841,0.012018124,-0.024847334,
-0.0031902494,-0.02714767,0.015282277,0.060032737,...
]],
"total_duration":3041671009,
"load_duration":2864335471,
"prompt_eval_count":7}
Ejemplo de solicitud (varias entradas)
curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'
Ejemplo de respuesta
{
"model":"llama3.1",
"embeddings":[[
-0.008471201,-0.013031566,0.019300476,0.011618419,-0.025197424,
-0.0024164673,-0.02669075,0.015766116,0.059984162,...
],[
-0.012765694,-0.012822924,0.015915949,0.006415892,-0.02327763,
0.004859615,-0.017922137,0.019488193,0.05638235,...
]],
"total_duration":195481419,
"load_duration":1318886,
"prompt_eval_count":14
}
tratamiento de errores
La API de Ollama devuelve códigos de error y mensajes apropiados cuando se produce un error. Los errores más comunes son:
- 400 Bad Request: error de formato de la petición.
- 404 No encontrado: El recurso solicitado no existe.
- 500 Internal Server Error: Error interno del servidor.
© declaración de copyright
文章版权归 Círculo de intercambio de inteligencia artificial 所有,未经允许请勿转载。
Artículos relacionados
Sin comentarios...