Menu Docs
Página inicial do Docs
/
Atlas
/ / /

Consulte o MongoDB com linguagem natural usando LangChain e LangGraph

Você pode usar a integração do MongoDB com o MongoDB para executar queries do MongoDB em linguagem natural. Neste tutorial, você cria um agente básico de IA que converte a linguagem natural em MQL usando a estrutura do React Agent e o MongoDB Agent Toolkit.

Trabalhe com uma versão executável deste tutorial como um notebook Python.

  • Tenha um cluster e um usuário MongoDB .

  • Adicione o conjunto de dados de amostra derestaurantes do ao seu cluster MongoDB.

  • Tenha uma chave de API OpenAI.

  • Execute o seguinte para instalar as dependências necessárias:

    pip install langchain-mongodb langchain-openai langgraph

Esse agente aproveita um conjunto predefinido de ferramentas com as quais executa um plano passo a passo definido por um LLM. Quando um usuário envia uma solicitação ao agente, o agente envia uma solicitação ao LLM que detalha suas ferramentas disponíveis e o resultado desejado pelo usuário. Com essas informações, o LLM gera uma série específica de etapas que aproveitam o conjunto de ferramentas disponível do agente para alcançar o resultado desejado pelo usuário.

Em seguida, o agente executa as etapas e confirma o sucesso, ou executa etapas atualizadas conforme necessário, enviando resultados intermediários de volta ao LLM para análise. E, finalmente, os resultados do sistema são retornados ao usuário.

1

Em seu terminal, preencha e execute o seguinte comando para definir a variável de ambiente necessária.

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

Copie e cole o seguinte em um arquivo local chamado natural_language_to_mql.py.

Pontos principais

  • self.toolkit, o FERRAMENTAS que o agente pode usar, é uma instância do MongoDB Toolkit.

  • self.agent, o próprio agente, é uma instância da estrutura do React Agent, que usa self.toolkit como parâmetro.

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

Substitua <connection-string> pela string de conexão do seu cluster do Atlas ou da implantação local do Atlas.

Sua string de conexão deve usar o seguinte formato:

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

Para saber mais, consulte Conectar a um cluster via drivers.

Sua string de conexão deve usar o seguinte formato:

mongodb://localhost:<port-number>/?directConnection=true

Para saber mais, consulte Connection strings.

No diretório no qual você salvou o arquivo local, execute o seguinte comando. Seus resultados podem variar.

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!

Voltar

GraphRAG

Nesta página