Puedes usar la integración de LangChain MongoDB para ejecutar consultas en lenguaje natural de MongoDB. En este tutorial, compilarás un agente básico de IA que convierte el lenguaje natural en MQL utilizando la Marco de trabajo del agente ReAct y el MongoDB Agent Toolkit.
Trabaja con una versión ejecutable de este tutorial como un cuaderno interactivo de Python.
Requisitos previos
Tener un clúster y un usuario de MongoDB.
Agregar el Conjunto de datos de muestrade restaurantes para su clúster MongoDB.
Tener una clave API de OpenAI.
Ejecute lo siguiente para instalar las dependencias necesarias:
pip install langchain-mongodb langchain-openai langgraph
Descripción conceptual
Este agente utiliza un conjunto predefinido de herramientas para ejecutar un plan paso a paso definido por un LLM. Cuando un usuario envía una solicitud al agente, este envía una solicitud al LLM que detalla las herramientas disponibles y el resultado deseado por el usuario. Con esta información, el LLM genera una serie específica de pasos que aprovechan el conjunto de herramientas del agente para lograr el resultado deseado por el usuario.
El agente ejecuta los pasos y confirma el éxito, o actualiza los pasos según sea necesario, enviando los resultados intermedios al LLM para su análisis. Finalmente, los resultados del sistema se devuelven al usuario.
Compilar el agente
Guardá el ejemplo como un archivo local de Python.
Copie y pegue lo siguiente en un archivo local llamado
natural_language_to_mql.py.
Puntos clave
self.toolkit, las herramientas que el agente puede utilizar, es una instancia del MongoDB Toolkit.self.agent, el agente en sí, es una instancia del marco ReAct Agent, que tomaself.toolkitcomo 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()
Agregue su cadena de conexión MongoDB.
Se debe sustituir <connection-string> por la cadena de conexión del clúster Atlas o de la implementación local de Atlas.
Su cadena de conexión debe usar el siguiente formato:
mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net
Para obtener más información, consulta Conectar a un clúster a través de bibliotecas de clientes.
Su cadena de conexión debe usar el siguiente formato:
mongodb://localhost:<port-number>/?directConnection=true
Para obtener más información, consulta Cadenas de conexión.
Ejecutar una consulta de prueba
Desde el directorio en el que guardaste el archivo local, ejecuta el siguiente comando. Tus resultados pueden 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!