Key Concepts

Helpers

Helpers

Helpers

HelpersλŠ” μ½”λ“œ λ…Έλ“œ(Python Node)μ—μ„œ 파일 μ²˜λ¦¬μ™€ 데이터 λ³€ν™˜μ„ μ‰½κ²Œ ν•˜κΈ° μœ„ν•œ λ‚΄μž₯ μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ λͺ¨μŒμž…λ‹ˆλ‹€.

λ³„λ„μ˜ import 없이 await helpers.ν•¨μˆ˜λͺ… ν˜•νƒœλ‘œ λ°”λ‘œ μ‚¬μš©ν•  수 있으며,

파일 데이터λ₯Ό agentria ν‘œμ€€ 포맷으둜 λ³€ν™˜ν•˜κ±°λ‚˜ λ…Έλ“œ κ°„ 전달할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.


  • 파일 β†’ base64 λ³€ν™˜

  • 파일 β†’ mime-type μΆ”μΆœ

  • 파일 β†’ agentria ν‘œμ€€ 포맷 λ³€ν™˜

  • 파일 메타데이터 μΆ”μΆœ



Helpers μ‚¬μš© μ˜ˆμ‹œ

file_type = await helpers.get_mime_type_from_file(file)


File Helpers

파일 μ²˜λ¦¬μ™€ κ΄€λ ¨λœ μ£Όμš” 헬퍼 ν•¨μˆ˜ λͺ©λ‘μž…λ‹ˆλ‹€.


  • get_base64_str_from_file(bytes | str | list) -> str

    • 파일 데이터λ₯Ό base64 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•©λ‹ˆλ‹€.



  • get_mime_type_from_file(bytes | str | list) -> str

    • 파일의 mime-type(예: image/png, application/pdf)을 μΆ”μΆœν•©λ‹ˆλ‹€.



  • as_files(value, key, default_mime_type, immutable) -> list[str] | None

    • 파일 데이터λ₯Ό μ—μ΄μ „νŠΈλ¦¬μ•„(Agentria) ν‘œμ€€ 파일 포맷(data:mime;base64,...)으둜 λ³€ν™˜ν•©λ‹ˆλ‹€.



  • get_file_metadata(bytes | str | list) -> dict

    • 파일의 메타데이터(이름, 크기, ν™•μž₯자, νƒ€μž…)λ₯Ό λ”•μ…”λ„ˆλ¦¬ ν˜•νƒœλ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.



as_files

λ‹€μ–‘ν•œ ν˜•νƒœμ˜ 파일 데이터λ₯Ό agentriaμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” ν‘œμ€€ 파일 포맷으둜 λ³€ν™˜ν•©λ‹ˆλ‹€.

μ›Œν¬ν”Œλ‘œ λ‚΄μ—μ„œ νŒŒμΌμ„ μ „λ‹¬ν•˜κ±°λ‚˜, Web Request Node와 연동할 λ•Œ 많이 μ‚¬μš©λ˜λŠ” 핡심 ν•¨μˆ˜μž…λ‹ˆλ‹€.

async def as_files(

value: str | bytes | list | dict | None,

key: str | None = None,

default_mime_type: str = "application/octet-stream",

immutable: bool = True

) -> list[str] | None:


μ§€μ›λ˜λŠ” μž…λ ₯ ν˜•νƒœ


  • as_files(bytes_data) : 단일 파일 데이터

  • as_files(bytes_data, key="report.png") : 파일 ν‚€(이름)λ₯Ό ν¬ν•¨ν•œ 단일 파일

  • as_files([b1, b2]) : μ—¬λŸ¬ 파일 데이터 리슀트

  • as_files([("k1", b1), ("k2", b2)]) : ν‚€κ°€ ν¬ν•¨λœ (key, file) νŠœν”Œ 리슀트

  • as_files({"k1": b1, "k2": b2}) : key-value ν˜•νƒœμ˜ 파일 λ”•μ…”λ„ˆλ¦¬



μ‚¬μš© μ˜ˆμ‹œ

# 1. 단일 이미지 버퍼λ₯Ό agentriaμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ 파일 ν˜•νƒœλ‘œ λ³€ν™˜

png_image_buffer = ...

from_buffer = await helpers.as_files(png_image_buffer)

# 2. μ—¬λŸ¬ 개의 이미지 버퍼λ₯Ό λ³€ν™˜

png_image_buffer_1 = ...

png_image_buffer_2 = ...

from_buffers = await helpers.as_files([png_image_buffer_1, png_image_buffer_2])

# 3. Web Request Node μ‚¬μš© μ‹œ form-data key μ§€μ •

png_image_buffer = ...

from_buffer = await helpers.as_files({"file": png_image_buffer})

# λ˜λŠ”

from_buffer = await helpers.as_files(png_image_buffer, key="file")

# 4. immutable μ˜΅μ…˜ ν™œμš©

# immutable=True: μ„€μ •ν•œ keyλ₯Ό κ³ μ •ν•©λ‹ˆλ‹€.

from_buffer = await helpers.as_files(png_image_buffer, key="dont_touch", immutable=True)

# immutable=False: λ‹€μŒ λ…Έλ“œμ—μ„œ key 이름을 λ³€κ²½ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€.

from_buffer = await helpers.as_files(png_image_buffer, key="can_be_renamed", immutable=False)


μ˜΅μ…˜ μ„€λͺ…


  • key : form-dataμ—μ„œ μ‚¬μš©ν•  파일 ν‚€ 이름

  • default_mime_type : mime-type을 μΆ”λ‘ ν•˜μ§€ λͺ»ν•  경우 κΈ°λ³Έκ°’

  • immutable : keyλ₯Ό κ³ μ •ν• μ§€ μ—¬λΆ€ (True: κ³ μ •, False: λ³€κ²½ κ°€λŠ₯)



get_file_metadata

파일의 상세 정보(메타데이터)λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€. 파일 검증, λ‘œκΉ…, 디버깅 λ“± λ‹€μ–‘ν•œ μš©λ„λ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜ν™˜ ν•­λͺ©

ν‚€ (Key)

μ„€λͺ…

mime_type

파일의 MIME νƒ€μž…

size

파일의 크기 (Byte λ‹¨μœ„)

filename

파일 이름

extension

파일 ν™•μž₯자