이미지
기억은 이미지을 담을 수 있습니다. 엔진이 이미지을 색인하므로, 캡션·제목·대체 텍스트가 없어도 어떤 언어의 글 질의로 찾힙니다.
Tablet 2 이상에서 지원합니다. 이미지을 구현하지 않은 엔진은 맨 404 대신 그 사실을 이름으로 알려주므로, 없는 기능인지 없는 기억인지 구분할 수 있습니다. JPEG·PNG·GIF·WebP 를 받습니다.
저장하기
평소의 add 호출에 image 객체를 넘깁니다. content 는 비어도 되며, 그때는 이미지만으로 검색됩니다.
mem.add("at the beach", image={"data": b64}) # caption + image
mem.add("", image={"data": b64}) # the image IS the memorydata 는 필수입니다. data:image/jpeg;base64, 접두어와 base64·openssl 이 넣는 줄바꿈은 SDK 가 떼어냅니다.
| 필드 | 하는 일 |
|---|---|
| data | 이미지의 base64. 필수입니다. 크기 상한은 SDK 에 박힌 값이 아니라 서버 설정이며, /health 가 memory.images.max_bytes 로 알려줍니다. |
| reference | 원본 사본이 어디 있는지. 문자열로 저장만 하고 저희가 가져가지 않습니다. 저희가 든 그림은 줄어든 것이므로, 원본이 있을 자리가 여기입니다. |
| taken_at | RFC3339, 보통 EXIF 에서 옵니다. event_date 가 비어 있으면 이 값이 채워서, 올린 때가 아니라 찍은 때 기준으로 정렬됩니다. |
찾기
이미지 전용 검색은 없습니다. search 와 recall 이 글과 이미지을 함께 순위 매겨 돌려줍니다.
가지고 있는 이미지 다루기
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)| 호출 | 하는 일 |
|---|---|
| get_image | 저희가 들고 있는 그림을 (bytes, content_type) 으로 돌려줍니다. 올리신 파일 그대로가 아닙니다. 긴 변이 1,568 px 를 넘었으면 줄여서 보관했고, JPEG 이 아닌 형식은 WebP 로 다시 쓰므로 PNG 를 올리셨어도 image/webp 로 돌아옵니다. 형식은 올릴 때 붙은 이름이 아니라 바이트에서 알아내니, 파일 이름은 content_type 을 보고 붙이십시오. 이미지가 없는 기억이면 빈 것을 주지 않고 오류를 냅니다. |
| list_images | 한 페이지를 최신순으로, 그리고 count 를 함께 줍니다. 페이지 크기가 아니라 저장소 전체 개수입니다. 페이징은 커서라 next_before 와 next_skip_ids 를 되돌려주면 됩니다. 이미지이 같은 시각을 가질 수 있어서 둘 다 필요합니다. |
| forget_image | 이미지만 지우고 글은 남깁니다. 캡션 없이 저장한 이미지은 그 자체가 기억이라, 그 경우엔 기억도 함께 지워집니다. |
forget_image 에 preview=True 를 주면 아무것도 바꾸지 않고 memory_kept 만 돌려줍니다. iter_images 는 페이지를 대신 넘깁니다.
이미지 한 장의 값
이미지은 글과 같이 토큰으로 청구합니다. 토큰 = 픽셀 넓이 / 556.7. 긴 변이 1,568 px 을 넘으면 1,568 px 기준으로 세므로, 2,500 px 이미지과 1,568 px 이미지의 값이 같습니다.
| 이미지 | 세는 크기 | 토큰 |
|---|---|---|
| 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 |
이미지 한 장 상한은 4,417 토큰입니다. 호출 전에 상한을 잔액에서 잡고, 끝난 뒤 실측값으로 청구합니다. 실측값이 상한을 넘지 않습니다.
저희가 보관하는 것은 원본이 아니라 기억의 해상도로 줄인 그림입니다. 긴 변이 1,568 px 를 넘으면 들어오는 길에 1,568 로 줄이고, 색인도 보관도 돌려드리는 것도 전부 그 줄인 그림입니다. 줄이려면 다시 인코딩해야 하므로 무손실 형식은 WebP 로 씁니다. 2,500 px PNG 를 올리시면 1,568 px
image/webp 로 돌아옵니다. JPEG 은 JPEG 그대로이고, 1,568 px 아래는 바이트를 손대지 않습니다. (다시 인코딩한 것이 원본보다 커지면 올리신 바이트를 그대로 둡니다.) 두 변 모두 700 px 이상, 긴 변 2,500 px 이하라는 조건은 그대로이고, 벗어나면 400 으로 거절합니다. 700 px 아래에서는 정액 최소가 적용되어 더 작은 이미지도 저장 원가가 같고, 2,500 px 위는 저희가 파일을 풀지 않습니다. 전체 해상도가 필요하시면 사본을 따로 두시거나 그 주소를 reference 에 넣으십시오.몇 장이 돌아오는가
한 응답에 기본 1장, 최대 5장입니다. 5장이면 2만 토큰에 가깝습니다.
| 필드 | 하는 일 |
|---|---|
| max_images | 0에서 5. 한 응답이 실을 수 있는 이미지 수입니다. 기본 1. 0 이면 글만 돌아옵니다. 범위를 벗어나면 깎지 않고 거절합니다. |
이미지에 붙인 영어 캡션은 영어 질의를 올리고 다른 언어 질의를 떨어뜨립니다. 14개 언어 평균 recall@5 11.4점입니다. 여러 언어로 검색한다면 캡션 없이 저장하십시오.