Imágenes
Una memoria puede llevar una imagen. El motor indexa la imagen, así que una consulta de texto en cualquier idioma coincide con ella aunque el registro no tenga pie de imagen, título ni texto alternativo.
Guardar una imagen
Pase un objeto image a la llamada add habitual. content puede ir vacío; entonces la imagen se puede buscar por sí sola.
mem.add("at the beach", image={"data": b64}) # caption + image
mem.add("", image={"data": b64}) # the image IS the memorydata es obligatorio. Tanto el prefijo data:image/jpeg;base64, como los saltos de línea que añaden base64 y openssl se eliminan automáticamente.
| Campo | Qué hace |
|---|---|
| data | Base64 de la imagen. Obligatorio. El techo de tamaño es un ajuste del servidor, no una constante del SDK - /health lo publica como memory.images.max_bytes. |
| reference | Dónde está su propia copia del original. Se guarda como cadena de texto y nosotros nunca la descargamos; y es justo su sitio, porque lo que guardamos está reducido. |
| taken_at | RFC3339, normalmente tomado del EXIF. Rellena event_date cuando ese campo está vacío, de modo que la memoria se ordena por la fecha en que se tomó la imagen y no por la de subida. |
Encontrar una imagen
No hay una búsqueda de imágenes aparte. search y recall devuelven las imágenes junto con el texto, ordenadas en la misma clasificación.
Trabajar con las imágenes ya guardadas
data, mime = mem.get_image(memory_id=mid)
page = mem.list_images(limit=50) # page["count"] = store total
mem.forget_image(memory_id=mid, preview=True)| Llamada | Qué hace |
|---|---|
| get_image | La imagen que guardamos, como (bytes, content_type); no necesariamente la que usted subió. Una imagen cuyo lado largo superaba los 1.568 px se guardó reducida y se recodificó a WebP salvo que fuera un JPEG, así que un PNG vuelve como image/webp. El tipo se deduce de los bytes, no del nombre con el que se subió el archivo: póngale nombre al archivo según content_type. Una memoria sin imagen lanza un error en lugar de devolver algo vacío. |
| list_images | Una página, las más recientes primero, más count - el total del store, no el tamaño de la página. La paginación es por cursor: devuelva next_before y next_skip_ids en la llamada siguiente. Hacen falta los dos porque varias imágenes pueden compartir la misma marca de tiempo. |
| forget_image | Elimina la imagen y conserva el texto. Una imagen guardada sin pie de imagen es la memoria, así que ahí elimina también la memoria. |
Pase preview=True a forget_image para obtener memory_kept sin modificar nada. iter_images pagina por usted.
Cuánto cuesta una imagen
Una imagen se factura en tokens, la misma unidad que el texto. Tokens = área en píxeles / 556,7. Por encima de 1.568 px en el lado largo el recuento se hace a 1.568 px, así que una imagen de 2.500 px cuesta lo mismo que una de 1.568 px.
| Imagen | Tamaño contabilizado | Tokens |
|---|---|---|
| 700 × 700 | as sent | 881 |
| 1000 × 1000 | as sent | 1,797 |
| 1568 × 1568 | as sent | 4,417 |
| 1920 × 1080 | 1568 × 882 | 2,485 |
| 2500 × 1875 | 1568 × 1176 | 3,313 |
| 2500 × 2500 | 1568 × 1568 | 4,417 |
Techo: 4.417 tokens por imagen. Reservamos ese techo contra su saldo antes de la llamada y cobramos después el valor medido, que nunca es mayor.
image/webp. El JPEG sigue siendo JPEG y por debajo de 1.568 px los bytes no se tocan. (Si recodificar hiciera el archivo más grande, dejamos sus bytes tal cual.) Ambos lados deben seguir midiendo ≥ 700 px y el lado largo ≤ 2.500 px, o la llamada se rechaza con un 400: por debajo de 700 px se aplica un mínimo fijo, así que una imagen más pequeña cuesta lo mismo almacenarla, y por encima de 2.500 px no descodificamos el archivo en absoluto. Guarde su propia copia, o ponga su URL en reference, si necesita el archivo a resolución completa.Cuántas vuelven
Por defecto 1, máximo 5 imágenes por respuesta. Cinco imágenes rondan los 20.000 tokens.
| Campo | Qué hace |
|---|---|
| max_images | De 0 a 5. Imágenes que puede llevar una sola respuesta. Por defecto 1. 0 devuelve solo texto. Un valor fuera de rango se rechaza en lugar de ajustarse. |