호스트 인프라 안에서 외부 호출 없이 AX Flow를 운영하기 위한 패키지 형태이다. 사용자 데이터는 호스트 인프라 안에서만 처리된다. 패키지 내부적으로 모드 (A) MCP 서버를 임베드하여 동일한 도구·시그니처를 직접 호출한다.
4.1 패키지 구조
axflow/
├── client.py # AXFlowClient — 검색·인입·그래프 진입점
├── ingest/ # 파일 인입 파이프라인
├── search/ # retriever 호출 래퍼
├── graph/ # 노드·엣지 조회/편집
└── governance/ # 권한·출처 메타 헬퍼4.2 핵심 호출 (개념)
# 개념 예시. 실제 시그니처는 PoC 착수 시 함께 동기화한다.
from axflow import AXFlowClient
client = AXFlowClient(
server="https://<host>",
client_id="host-agent",
client_secret="<client-secret>",
scope="rag:read rag:write",
)
# SDK 가 내부에서 /api/v1/user/auth/token 호출 + access_token 갱신을 자동 처리
# 인입
job = client.ingest.upload("/path/to/contract.pdf", labels=["contract"])
client.ingest.wait(job.id)
# 검색 (retriever 와 동일 시그니처)
result = client.search.retriever(
query="2026 1분기 NDA 만료일",
mode="deep", # smart | deep
top_k=10,
)
print(result.content, result.score)
# 그래프
node = client.graph.get_entity("KakaoPay")4.3 Pydantic 기반 시그니처 + 자동 문서 노출 (개발자 경험)
본 SDK 패키지는 0.1 자동 파생 원칙을 그대로 따른다. 핵심 도구의 입출력은 Pydantic 모델로 정의되며, 각 필드의 Field(description=...)가 SDK 메서드 시그니처·Swagger UI·MCP tools/list inputSchema에 동일하게 노출된다.
# 예 — RetrieverRequest 모델 (단일 정의 → 다중 노출면)
class RetrieverRequest(BaseModel):
query: Annotated[str, Field(min_length=1, description="자연어 질의")]
mode: Annotated[
Literal["smart", "deep"],
Field(description="smart: 균형(~0.9s). deep: 정밀(~3.2s), 재정렬 점수 채움."),
] = "smart"
top_k: Annotated[int, Field(ge=1, le=100, description="그래프 엔티티·관계 최대 수")] = 10
# ... 이하 2.2 표와 동일호스트 LLM이 MCP tools/list 응답 (한 번의 핸드셰이크) 으로 도구 사용법을 학습하며, 도입사 개발자는 /docs 인터랙티브 UI로 동일 시그니처를 손에 들고 검증할 수 있다. SDK 클라이언트 라이브러리는 PoC 진입 후 OpenAPI 스펙(/openapi.json) 기반 자동 생성 또는 수기 wrapper 방식 중 도입사 측 선호에 맞춰 협의한다.
4.4 사내 배포 모드
| 배포 모드 | 설명 | 적합 |
|---|---|---|
| Wheel 직접 배포 | axflow-x.y.z.whl 사내 배포 | 내부망 폐쇄 환경 |
| Private PyPI | 도입사 사내 PyPI 미러 | 다수 팀 공동 사용 |
| Docker | SDK + 의존성 + 모델 함께 패키징 | GPU 노드 전용 |