애플리케이션(Application)

애플리케이션(Application)

Outlines에서 prompt와 출력 구조를 탐색하다 보면, 이걸 호출 가능한 하나의 함수로 캡슐화하고 싶어질 때가 와요. 바로 그게 outlines.Function 이에요. 프롬프트 템플릿(함수)과 출력 타입(Pydantic 등)을 묶어, 프로그램 어디서든 다시 쓸 수 있는 재사용 가능한 함수로 만들어 줘요.

기본 사용

@outlines.prompt 함수와 출력 클래스를 outlines.Function에 넘기면 돼요.

from pydantic import BaseModel
import outlines

@outlines.prompt
def tell_a_joke(topic):
    """Tell me a joke about {{ topic }}."""

class Joke(BaseModel):
    setup: str
    punchline: str

generate_joke = outlines.Function(
    tell_a_joke,
    Joke,
    "microsoft/Phi-3-mini-4k-instruct",
)

response = generate_joke("baseball")
print(response)

출처: https://dottxt-ai.github.io/outlines/latest/features/utility/application/

generate_joke("baseball")처럼 호출하면 Joke 객체가 반환돼요. 템플릿과 출력 구조, 모델이 전부 함수 하나로 뭉쳐진 셈이에요.

GitHub에서 함수 불러오기

다른 사람이 저장해 둔 outlines.Function을 GitHub에서 직접 불러올 수도 있어요. 누군가 TheirRepo 저장소 루트의 joke.py에 함수를 저장했다면:

import outlines

joke = outlines.Function.from_github("Someone/TheirRepo/joke")
response = joke("baseball")

이 방식은 구조화 생성 사용 사례를 커뮤니티끼리 공유·협업하기 쉽게 만들어 줘요.

왜 유용한가

Application(함수)을 쓰면 세 가지가 자연스럽게 해결돼요.

  • 프롬프트가 코드에 흩어지지 않고 함수로 정리됩니다.
  • 프롬프트와 출력 스키마가 한 곳에 묶여 유지 보수가 쉬워집니다.
  • GitHub 공유를 통해 사용 사례를 재사용·확장하기 좋습니다.

더 알아보기