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.
Pré-requisitos
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
Visão geral conceitual
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.
Criar o agente
Salve o exemplo como um arquivo Python local.
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 usaself.toolkit
como parâmetro.
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()
Adicione sua string de conexão do MongoDB .
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.
Executar uma query de teste
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!