AI 에이전트 만들기
Important
이 기능은 공개 미리 보기 상태입니다.
이 문서에서는 Mosaic AI 에이전트 프레임워크를 사용하여 도구 호출 AI 에이전트 를 만드는 방법을 보여줍니다.
에이전트 도구를 제공하고 에이전트와 채팅을 시작하여 에이전트를 테스트하고 프로토타입을 제작하는 방법을 알아봅니다. 에이전트 프로토타입 작성이 완료되면 에이전트를 정의하는 Python 코드를 내보내 AI 에이전트를 반복하고 배포합니다.
요구 사항
- 복합 AI 시스템 및 AI 에이전트란?에 설명된 대로 AI 에이전트 및 도구의 개념을 이해하세요.
- Databricks는 에이전트를 개발할 때 최신 버전의 MLflow Python 클라이언트를 설치하는 것이 좋습니다.
AI 에이전트 도구 만들기
첫 번째 단계는 에이전트에 제공할 도구를 만드는 것입니다. 에이전트는 도구를 사용하여 언어 생성 외에 작업을 수행합니다(예: 구조화되거나 구조화되지 않은 데이터를 검색하거나, 코드를 실행하거나, 원격 서비스와 통신(예: 전자 메일 또는 Slack 메시지 보내기).
에이전트 도구를 만드는 방법에 대한 자세한 내용은 AI 에이전트 도구 만들기참조하세요.
이 가이드에서는 Python 코드를 실행하는 Unity 카탈로그 함수 만듭니다. 에이전트는 이 도구를 사용하여 사용자가 제공하거나 에이전트 자체에서 작성한 Python을 실행할 수 있습니다.
Notebook 셀에서 다음 코드를 실행합니다.
%sql
노트북 매직을 사용하여 python_exec
이라는 Unity 카탈로그 함수를 만듭니다.
%sql
CREATE OR REPLACE FUNCTION
main.default.python_exec (
code STRING COMMENT 'Python code to execute. Remember to print the final result to stdout.'
)
RETURNS STRING
LANGUAGE PYTHON
DETERMINISTIC
COMMENT 'Executes Python code in the sandboxed environment and returns its stdout. The runtime is stateless and you can not read output of the previous tool executions. i.e. No such variables "rows", "observation" defined. Calling another tool inside a Python code is NOT allowed. Use standard python libraries only.'
AS $$
import sys
from io import StringIO
sys_stdout = sys.stdout
redirected_output = StringIO()
sys.stdout = redirected_output
exec(code)
sys.stdout = sys_stdout
return redirected_output.getvalue()
$$
AI 플레이그라운드의 도구 호출 에이전트 프로토타이핑
Unity 카탈로그 함수를 만든 후 AI Playground 사용하여 LLM에 도구를 제공하고 에이전트를 테스트합니다. AI 플레이그라운드는 도구 호출 에이전트를 프로토타이핑할 수 있는 샌드박스를 제공합니다.
AI 에이전트에 만족하면 AI 에이전트를 내보내 Python에서 추가로 개발하거나 있는 그대로 모델 서비스 엔드포인트로 배포할 수 있습니다.
참고 항목
Unity 카탈로그 및 서버리스 컴퓨팅, Mosaic AI 에이전트 프레임워크, 토큰당 종량제 파운데이션 모델 또는 외부 모델을 현재 작업 영역에서 AI 플레이그라운드의 에이전트 프로토타이핑에 사용할 수 있어야 합니다.
도구 호출 엔드포인트 프로토타이핑.
Playground에서 도구 사용 레이블이 있는 모델을 선택합니다.
도구를 선택하고 드롭다운에서 Unity 카탈로그 함수 이름을 지정합니다.
채팅하여 LLM, 도구 및 시스템 프롬프트의 현재 조합을 테스트하고 변형을 시도합니다.
AI 플레이그라운드 에이전트 내보내기 및 배포
도구를 추가하고 에이전트를 테스트한 후 Playground 에이전트를 Python Notebook으로 내보냅니다.
내보내기를 클릭하여 AI 에이전트를 개발하고 배포하는 데 도움이 되는 Python Notebook을 생성합니다.
에이전트 코드를 내보낸 후 작업 영역에 저장된 세 개의 파일이 표시됩니다.
-
agent
Notebook: LangChain을 사용하여 에이전트를 정의하는 Python 코드를 포함합니다. -
driver
Notebook: Mosaic AI 에이전트 프레임워크를 사용하여 AI 에이전트를 기록, 추적, 등록 및 배포하는 Python 코드를 포함합니다. -
config.yml
: 도구 정의를 포함하여 에이전트에 대한 구성 정보를 포함합니다.
-
agent
Notebook을 열어 에이전트를 정의하는 LangChain 코드를 확인하고, 이 Notebook을 사용하여 더 많은 도구를 정의하거나 에이전트의 매개 변수를 조정하는 등의 프로그래밍 방식으로 에이전트를 테스트하고 반복합니다.참고 항목
내보낸 코드는 AI 플레이그라운드 세션과 다른 동작을 포함할 수 있습니다. Databricks는 내보낸 Notebooks를 실행하여 더 반복 및 디버그하고, 에이전트 품질을 평가한 다음, 다른 사용자와 공유할 에이전트를 배포하는 것이 좋습니다.
에이전트의 출력에 만족하면
driver
Notebook을 실행하여 에이전트를 기록하고 모델 서빙 엔드포인트에 배포할 수 있습니다.
코드에서 에이전트 정의
AI Playground에서 에이전트 코드를 생성하는 것 외에도 LangChain 또는 Python 코드와 같은 프레임워크를 사용하여 코드에서 에이전트를 직접 정의할 수도 있습니다. 에이전트 프레임워크를 사용하여 에이전트를 배포하려면 해당 입력이 지원되는 입력 및 출력 형식 중 하나를 준수해야 합니다.
매개 변수를 사용하여 에이전트 구성
에이전트 프레임워크에서 매개 변수를 사용하여 에이전트 실행 방법을 제어할 수 있습니다. 이렇게 하면 코드를 변경하지 않고도 에이전트의 다양한 특성을 빠르게 반복할 수 있습니다. 매개 변수는 Python 사전 또는 .yaml
파일에서 정의하는 키-값 쌍입니다.
코드를 구성하려면 키-값 매개 변수 집합인 ModelConfig
를 만듭니다.
ModelConfig
는 Python 사전 또는 .yaml
파일입니다. 예를 들어 개발 중에 사전을 사용한 다음 프로덕션 배포 및 CI/CD용 .yaml
파일로 이를 변환할 수 있습니다.
ModelConfig
에 대한 자세한 내용은 MLflow 설명서를 참조하세요.
아래에 ModelConfig
예제가 나와 있습니다.
llm_parameters:
max_tokens: 500
temperature: 0.01
model_serving_endpoint: databricks-dbrx-instruct
vector_search_index: ml.docs.databricks_docs_index
prompt_template: 'You are a hello world bot. Respond with a reply to the user''s
question that indicates your prompt template came from a YAML file. Your response
must use the word "YAML" somewhere. User''s question: {question}'
prompt_template_input_vars:
- question
코드에서 구성을 호출하려면 다음 중 하나를 사용합니다.
# Example for loading from a .yml file
config_file = "configs/hello_world_config.yml"
model_config = mlflow.models.ModelConfig(development_config=config_file)
# Example of using a dictionary
config_dict = {
"prompt_template": "You are a hello world bot. Respond with a reply to the user's question that is fun and interesting to the user. User's question: {question}",
"prompt_template_input_vars": ["question"],
"model_serving_endpoint": "databricks-dbrx-instruct",
"llm_parameters": {"temperature": 0.01, "max_tokens": 500},
}
model_config = mlflow.models.ModelConfig(development_config=config_dict)
# Use model_config.get() to retrieve a parameter value
value = model_config.get('sample_param')
검색자 스키마 설정
AI 에이전트는 종종 벡터 검색 인덱스를 사용하여 관련 문서를 찾아서 반환하는 에이전트 도구 유형인 검색기를 사용합니다. 리트리버에 대한 자세한 내용은 비구조적 리트리버 AI 에이전트 도구을 참조하세요.
검색기가 제대로 추적되도록 하려면 코드에서 에이전트를 정의할 때 mlflow.models.set_retriever_schema 호출합니다. 반환된 테이블의 열 이름을 MLflow의 예상 필드(예: set_retriever_schema
, primary_key
및 text_column
)에 매핑하는 데 사용합니다doc_uri
.
# Define the retriever's schema by providing your column names
# These strings should be read from a config dictionary
mlflow.models.set_retriever_schema(
name="vector_search",
primary_key="chunk_id",
text_column="text_column",
doc_uri="doc_uri"
# other_columns=["column1", "column2"],
)
참고 항목
열은 doc_uri
리트리버의 성능을 평가할 때 특히 중요합니다.
doc_uri
는 검색기에서 반환된 문서의 기본 식별자이므로 지상 진리 평가 집합과 비교할 수 있습니다. 평가 집합 참조
필드와 함께 other_columns
열 이름 목록을 제공하여 검색기 스키마에 추가 열을 지정할 수도 있습니다.
여러 검색기가 있는 경우 각 검색기 스키마에 고유한 이름을 사용하여 여러 스키마를 정의할 수 있습니다.
지원되는 입력 및 출력 형식
에이전트 프레임워크는 MLflow 모델 서명을 사용하여 에이전트에 대한 입력 및 출력 스키마를 정의합니다. Mosaic AI Agent Framework 기능을 사용하려면 검토 앱 및 AI Playground와 같은 기능과 상호 작용하려면 최소 입력/출력 필드 집합이 필요합니다. 자세한 내용은 에이전트의 입력 및 출력 스키마 정의를 참조 하세요.
예제 Notebook
이러한 Notebook은 Databricks에서 체인 응용 프로그램을 만드는 방법을 설명하는 간단한 "Hello, world" 체인을 만듭니다. 첫 번째 예제에서는 간단한 체인을 만듭니다. 두 번째 예제 Notebook에서는 매개 변수를 사용하여 개발 중에 코드 변경을 최소화하는 방법을 보여 줍니다.
단순 체인 Notebook
간단한 체인 드라이버 Notebook
매개 변수화된 체인 Notebook
매개 변수화된 체인 드라이버 Notebook
다음 단계
- AI 에이전트를 기록합니다.
- AI 에이전트에 추적을 추가합니다.
- AI 에이전트를 배포합니다.