Bilder
Eine Erinnerung kann ein Bild enthalten. Die Engine indexiert das Bild, sodass eine Textanfrage in jeder Sprache darauf passt, auch wenn der Datensatz keine Bildunterschrift, keinen Titel und keinen Alt-Text hat.
Ein Bild speichern
Übergeben Sie ein image-Objekt an den normalen add-Aufruf. content darf leer sein; das Bild ist dann für sich allein durchsuchbar.
mem.add("at the beach", image={"data": b64}) # caption + image
mem.add("", image={"data": b64}) # the image IS the memorydata ist erforderlich. Ein Präfix data:image/jpeg;base64, sowie die von base64 und openssl eingefügten Zeilenumbrüche werden für Sie entfernt.
| Feld | Was er tut |
|---|---|
| data | Base64 des Bildes. Erforderlich. Die Größenobergrenze ist eine Servereinstellung, keine SDK-Konstante - /health meldet sie als memory.images.max_bytes. |
| reference | Wo Ihre eigene Kopie des Originals liegt. Wird als Zeichenkette gespeichert und von uns nie abgerufen - und genau der richtige Ort dafür, denn was wir vorhalten, ist verkleinert. |
| taken_at | RFC3339, üblicherweise aus EXIF. Füllt event_date, wenn dieses leer ist, sodass die Erinnerung nach dem Aufnahmezeitpunkt sortiert wird und nicht nach dem Zeitpunkt des Hochladens. |
Ein Bild finden
Es gibt keine separate Bildsuche. search und recall geben Bilder zusammen mit Text zurück, gemeinsam gerankt.
Mit vorhandenen Bilder arbeiten
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)| Aufruf | Was er tut |
|---|---|
| get_image | Das Bild, das wir vorhalten, als (bytes, content_type) - nicht zwangsläufig Ihr Upload. Ein Bild, dessen lange Kante über 1.568 px lag, wurde verkleinert gespeichert und, sofern es kein JPEG war, zu WebP umkodiert: ein PNG kommt als image/webp zurück. Der Typ wird aus den Bytes ermittelt, nicht aus dem Namen, unter dem hochgeladen wurde - benennen Sie die Datei also nach content_type. Eine Erinnerung ohne Bild löst einen Fehler aus, statt etwas Leeres zurückzugeben. |
| list_images | Eine Seite, neueste zuerst, plus count - die Gesamtzahl im Store, nicht die Seitengröße. Die Paginierung läuft über einen Cursor: Geben Sie next_before und next_skip_ids zurück. Beides ist nötig, weil Bilder denselben Zeitstempel haben können. |
| forget_image | Entfernt das Bild und behält den Text. Ein ohne Bildunterschrift gespeichertes Bild ist die Erinnerung, dort wird also auch die Erinnerung gelöscht. |
Übergeben Sie preview=True an forget_image, um memory_kept zu erhalten, ohne etwas zu ändern. iter_images übernimmt die Paginierung für Sie.
Was ein Bild kostet
Ein Bild wird in Token abgerechnet, derselben Einheit wie Text. Token = Fläche in Pixeln / 556,7. Ab 1.568 px an der langen Kante wird mit 1.568 px gerechnet, ein Bild mit 2.500 px kostet also so viel wie eines mit 1.568 px.
| Bild | Gezählt bei | 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 |
Obergrenze: 4.417 Token pro Bild. Wir reservieren diese Obergrenze vor dem Aufruf von Ihrem Guthaben und rechnen danach den gemessenen Wert ab, der nie höher ausfällt.
image/webp zurück. JPEG bleibt JPEG, und unterhalb von 1.568 px bleiben die Bytes unangetastet. (Würde die Datei durch das Umkodieren größer, behalten wir Ihre Bytes so, wie sie waren.) Beide Kanten müssen weiterhin ≥ 700 px sein und die lange Kante ≤ 2.500 px, sonst wird der Aufruf mit einem 400 abgelehnt - unter 700 px gilt ein pauschaler Mindestbetrag, ein kleineres Bild kostet in der Speicherung also gleich viel, und über 2.500 px dekodieren wir die Datei gar nicht erst. Behalten Sie eine eigene Kopie oder legen Sie deren URL in reference ab, wenn Sie die Datei in voller Auflösung brauchen.Wie viele zurückkommen
Standard 1, maximal 5 Bilder pro Antwort. Fünf Bilder sind knapp 20.000 Tokens.
| Feld | Was er tut |
|---|---|
| max_images | 0 bis 5. Bilder, die eine einzelne Antwort enthalten darf. Standard 1. 0 gibt nur Text zurück. Werte außerhalb des Bereichs werden abgelehnt, nicht begrenzt. |