您可以使用 LangChain MongoDB集成来运行自然语言MongoDB查询。在本教程中,您构建一个基本的AI代理,使用 React助手框架 和 MongoDB 助手工具包。 将自然语言转换为 MQL 。
使用本教程的可运行版本以作为 Python 笔记本。
先决条件
拥有MongoDB 集群和用户。
将 餐厅示例数据集添加到MongoDB 集群。
拥有 OpenAI API密钥。
运行以下命令以安装所需的依赖项:
pip install langchain-mongodb langchain-openai langgraph
概念概述
该代理利用一设立预定义的工具来执行 LLM 定义的分步计划。当用户向代理提交提示时,代理会向 LLM 发送请求,其中详细说明其可用工具和用户期望的结果。根据这些信息,法学硕士生成一系列特定的步骤,利用代理的可用工具集来实现用户的预期结果。
然后,代理执行这些步骤并确认成功,或根据需要执行更新的步骤,将中间结果发送回 LLM 进行分析。最后,系统将结果返回给用户。
构建代理
2
将示例保存为本地Python文件。
将以下内容复制并粘贴到名为 natural_language_to_mql.py
的本地文件中。
要点
self.toolkit
, 是代理可以使用的工具,是MongoDB Toolkit。的一个实例。self.agent
, 即代理本身,是 React Agent框架 的一个实例,该框架将self.toolkit
作为参数。
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()
3
添加MongoDB连接字符串。
将 <connection-string>
替换为您的 Atlas 集群或本地部署的连接字符串。
连接字符串应使用以下格式:
mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net
要学习;了解更多信息,请参阅通过驱动程序连接到集群。
运行测试查询
从保存本地文件的目录中运行以下命令。结果可能会有所不同。
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!