LangChain MongoDB 통합을 사용하여 언어 MongoDB 쿼리를 실행 수 있습니다. 이 튜토리얼에서는 React Agent 프레임워크 와MongoDBAgent 툴킷을 사용하여 언어 MQL 로 변환하는 기본 AI 에이전트 빌드 .
이 튜토리얼의 실행 가능한 버전을 Python 노트북으로 사용합니다.
전제 조건
MongoDB cluster 와 사용자가 있어야 합니다.
레스토랑 샘플 데이터 세트를 MongoDB cluster 에 추가합니다.
OpenAI API 키가 있어야 합니다.
다음을 실행하여 필수 종속성을 설치합니다.
pip install langchain-mongodb langchain-openai langgraph
개념적 개요
이 에이전트 LLM에서 정의한 단계별 계획을 실행하는 데 사용되는 사전 정의된 도구 설정하다 활용합니다. 사용자가 에이전트 에게 프롬프트를 제출하면 에이전트 사용 가능한 도구와 사용자가 원하는 결과를 자세히 설명하는 요청 LLM에 보냅니다. 이 정보를 바탕으로 LLM은 에이전트의 사용 가능한 도구 세트를 활용하여 사용자가 원하는 결과를 얻는 일련의 특정 단계를 생성합니다.
그런 다음 에이전트 단계를 실행하여 성공 확인하거나, 분석을 위해 중간 결과를 LLM으로 다시 전송하여 필요에 따라 업데이트된 단계를 실행합니다. 마지막으로 시스템 결과가 사용자에게 반환됩니다.
에이전트 구축
예시 로컬 Python 파일 로 저장합니다.
다음을 복사하여 natural_language_to_mql.py라는 로컬 파일 에 붙여넣습니다.
요점
self.toolkit, 에이전트 사용할 수 있는 도구는 MongoDB 툴킷의 인스턴스 입니다.self.agent에이전트 자체는 를self.toolkit매개변수로 사용하는 React Agent 프레임워크 의 인스턴스 입니다.
1 import os 2 from langchain_openai import ChatOpenAI 3 from langgraph.prebuilt import create_react_agent 4 from langchain_mongodb.agent_toolkit import ( 5 MONGODB_AGENT_SYSTEM_PROMPT, 6 MongoDBDatabase, 7 MongoDBDatabaseToolkit, 8 ) 9 10 MONGODB_URI = '<connection-string>' 11 DB_NAME = 'sample_restaurants' 12 NATURAL_LANGUAGE_QUERY = 'Find all restaurants that serve hamburgers.' 13 14 class NaturalLanguageToMQL: 15 def __init__(self): 16 self.llm = ChatOpenAI(model="gpt-4o-mini", timeout=60) 17 self.system_message = MONGODB_AGENT_SYSTEM_PROMPT.format(top_k=5) 18 self.db_wrapper = MongoDBDatabase.from_connection_string( 19 MONGODB_URI, 20 database=DB_NAME) 21 self.toolkit = MongoDBDatabaseToolkit(db=self.db_wrapper, llm=self.llm) 22 self.agent = create_react_agent( 23 self.llm, 24 self.toolkit.get_tools(), 25 state_modifier=self.system_message) 26 self.messages = [] 27 28 def convert_to_mql_and_execute_query(self, query): 29 # Start the agent with the agent.stream() method 30 events = self.agent.stream( 31 {"messages": [("user", query)]}, 32 stream_mode="values", 33 ) 34 # Add output (events) from the agent to the self.messages list 35 for event in events: 36 self.messages.extend(event["messages"]) 37 38 def print_results(self): 39 # Print the the end-user's expected output from 40 # the final message produced by the agent. 41 print(self.messages[-1].content) 42 43 def main(): 44 converter = NaturalLanguageToMQL() 45 converter.convert_to_mql_and_execute_query(NATURAL_LANGUAGE_QUERY) 46 converter.print_results() 47 48 if __name__ == '__main__': 49 main()
MongoDB 연결 문자열 추가합니다.
<connection-string>을 Atlas 클러스터 또는 로컬 Atlas 배포서버의 연결 문자열로 교체합니다.
연결 문자열은 다음 형식을 사용해야 합니다.
mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net
자세한 학습은 드라이버를 통해 클러스터에 연결을 참조하세요.
연결 문자열은 다음 형식을 사용해야 합니다.
mongodb://localhost:<port-number>/?directConnection=true
학습 내용은 연결 문자열을 참조하세요.
테스트 쿼리 실행
로컬 파일 저장한 디렉토리 에서 다음 명령을 실행 . 결과는 다를 수 있습니다.
python natural_language_to_mql.py
Here are some restaurants that serve hamburgers: 1. **Wendy's** - Address: 469 Flatbush Avenue, Brooklyn, NY 11225 - Borough: Brooklyn 2. **White Castle** - Address: 531 Myrtle Avenue, Brooklyn, NY 11205 - Borough: Brooklyn 3. **McDonald's** - Address: 75-50 101 Avenue, Queens, NY 11416 - Borough: Queens 4. **McDonald's** - Address: 943 Flatbush Avenue, Brooklyn, NY 11226 - Borough: Brooklyn 5. **McDonald's** - Address: 395 Flatbush Avenue Extension, Brooklyn, NY 11201 - Borough: Brooklyn Let me know if you'd like more details or additional results!