Docs Menu
Docs Home
/
Atlas
/ / /

LgChuin と LingGraph を使用した自然言語でMongoDB のクエリ

LgChuin MongoDB統合を使用して、自然言語MongoDBクエリを実行できます。このチュートリアルでは、 React Agentフレームワーク とMongoDB Agent ツールキーを使用して、自然言語を MQLに変換する基本的なAIエージェントを構築します。

このチュートリアルの実行可能なバージョンをPythonノートとして操作します。

  • MongoDBクラスターとユーザーを作成します。

  • レストランのサンプルデータセットをMongoDBクラスターに追加します。

  • OpenAI APIキーを用意します。

  • 必要な依存関係をインストールするには、以下を実行します。

    pip install langchain-mongodb langchain-openai langgraph

このエージェントは、事前定義されたツールのセットを活用して、LVM によって定義されたステップ付きプランを実行します。 ユーザーがエージェントに プロンプトを送信すると、エージェントは、使用可能なツールとユーザーの結果の詳細を示すリクエストを LM に送信します。 その情報を使用して、LVM は、エージェントの利用可能なツールセットを活用してユーザーの結果を得る特定の一連のステップを生成します。

次に、エージェントはステップを実行して成功を確認するか、分析のために中間結果を LM に送り返して、必要に応じて更新されたステップを実行します。 そして最後に、システムの結果がユーザーに返されます。

1

ターミナルで、 に入力して実行し、必要な環境変数を設定します。

export OPENAI_API_KEY=<your-openai-api-key>
2

以下をコピーして、natural_language_to_mql.py というローカルファイルに貼り付けます。

キー ポイント

1import os
2from langchain_openai import ChatOpenAI
3from langgraph.prebuilt import create_react_agent
4from langchain_mongodb.agent_toolkit import (
5 MONGODB_AGENT_SYSTEM_PROMPT,
6 MongoDBDatabase,
7 MongoDBDatabaseToolkit,
8)
9
10MONGODB_URI = '<connection-string>'
11DB_NAME = 'sample_restaurants'
12NATURAL_LANGUAGE_QUERY = 'Find all restaurants that serve hamburgers.'
13
14class 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
43def main():
44 converter = NaturalLanguageToMQL()
45 converter.convert_to_mql_and_execute_query(NATURAL_LANGUAGE_QUERY)
46 converter.print_results()
47
48if __name__ == '__main__':
49 main()
3

<connection-string> を Atlas クラスターまたはローカル Atlas 配置の接続文字列に置き換えます。

接続stringには、次の形式を使用する必要があります。

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

詳しくは、ドライバーを使用してクラスターに接続する を参照してください。

接続stringには、次の形式を使用する必要があります。

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!

戻る

GraphRAG

項目一覧