Skip to main content
이 문서는 Databricks Apps 섹션의 일부입니다.

Agent UI (Streamlit + Model Serving)

Databricks Model Serving 엔드포인트를 호출하는 AI 챗봇 UI입니다. 이 예제는 Foundation Model API 또는 커스텀 Agent를 웹 인터페이스로 노출 하는 가장 일반적인 패턴을 보여줍니다.

왜 Agent UI인가?

Databricks에서 AI Agent를 개발하면 Model Serving Endpoint로 배포할 수 있습니다. 하지만 엔드포인트 자체는 REST API일 뿐, 사용자가 직접 대화할 수 있는 UI가 없습니다. Databricks Apps로 Agent UI를 만들면:
  • 비기술 사용자도 Agent와 대화할 수 있습니다
  • 워크스페이스 SSO로 인증이 자동 처리됩니다
  • 대화 이력, 피드백 등 부가 기능을 추가할 수 있습니다

requirements.txt

Agent UI는 최소한의 패키지만 필요합니다. databricks-sdk가 Model Serving 호출과 인증을 모두 처리합니다. SQL 연결이 필요하면 databricks-sql-connectorpandas를 추가하세요.

app.yaml

serving-endpoint 리소스를 선언하고, SERVING_ENDPOINT 환경변수로 엔드포인트 이름을 주입합니다. 앱의 SP에 해당 엔드포인트에 대한 CAN QUERY 권한을 부여해야 합니다.

app.py

이 코드의 핵심 패턴을 설명합니다. WorkspaceClient(): Config()와 마찬가지로 환경변수에서 인증 정보를 자동으로 읽습니다. Model Serving 호출 시 SP의 OAuth 토큰이 자동으로 사용됩니다. st.session_state.messages: Streamlit의 세션 상태에 대화 이력을 저장합니다. 이 상태는 사용자의 브라우저 세션에 귀속되므로, 다른 사용자의 대화와 섞이지 않습니다. 단, 앱이 재시작되면 초기화됩니다. w.serving_endpoints.query(): Databricks SDK를 통해 Model Serving Endpoint에 ChatCompletion 형식의 요청을 보냅니다. messages 배열에 전체 대화 이력을 전달하여 문맥을 유지합니다. response.choices[0].message.content: OpenAI ChatCompletion API와 동일한 응답 형식입니다. Databricks Model Serving은 이 형식을 표준으로 사용합니다.
참고 Agent 앱 확장 아이디어:
  • 대화 이력 저장: UC 테이블에 대화 이력을 저장하면 세션 간 대화가 유지됩니다
  • 피드백 수집: 각 응답에 좋아요/싫어요 버튼을 추가하여 모델 품질 개선에 활용
  • 파일 업로드: st.file_uploader()로 문서를 업로드하고 RAG에 활용
  • 스트리밍 응답: stream=True로 토큰 단위 스트리밍 지원 (UX 개선)

프로덕션 전환 시 고려사항