En este tutorial, presentamos un agente de IA avanzado construido usando Nebio ‘ El ecosistema robusto, particularmente los componentes de Chatnebius, Nebiusembeddings y Nebius Retriever. El agente utiliza el modelo LLAMA-3.3-70B-Instructo-Fast para generar respuestas de alta calidad, incorporando funcionalidades externas como la búsqueda de Wikipedia, la recuperación de documentos contextuales y el cálculo matemático seguro. Al combinar un diseño rápido estructurado con el marco modular de Langchain, este tutorial demuestra cómo construir un asistente de IA de razonamiento multifuncional que sea interactivo y extensible. Ya sea para consultas científicas, ideas tecnológicas o tareas numéricas básicas, este agente muestra el potencial del Nebio como una plataforma para construir sistemas de IA sofisticados.
!pip install -q langchain-nebius langchain-core langchain-community wikipedia
import os
import getpass
from typing import List, Dict, Any
import wikipedia
from datetime import datetime
Comenzamos instalando bibliotecas esenciales, incluidas Langchain-Nebius, Langchain-Core, Langchain-Community y Wikipedia, que son cruciales para construir un asistente de IA rico en características. Luego importa módulos necesarios como OS, GetPass, DateTime y Typing Utilidades, e inicializa la API de Wikipedia para el acceso de datos externos.
from langchain_core.documents import Document
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_core.tools import tool
from langchain_nebius import ChatNebius, NebiusEmbeddings, NebiusRetriever
if "NEBIUS_API_KEY" not in os.environ:
os.environ["NEBIUS_API_KEY"] = getpass.getpass("Enter your Nebius API key: ")
Estamos importando componentes centrales de Langchain y Nebius para habilitar el manejo de documentos, la plantación de solicitud, el análisis de salida e integración de herramientas. Establece clases clave como Chatnebius para modelado de idiomas, Nebiusembeddings para la representación de vectores y Nebius Retriever para la búsqueda semántica. Se accede de forma segura a la clave de API Nebius del usuario utilizando GetPass para autenticar las interacciones API posteriores.
class AdvancedNebiusAgent:
"""Advanced AI Agent with retrieval, reasoning, and external tool capabilities"""
def __init__(self):
self.llm = ChatNebius(model="meta-llama/Llama-3.3-70B-Instruct-fast")
self.embeddings = NebiusEmbeddings()
self.knowledge_base = self._create_knowledge_base()
self.retriever = NebiusRetriever(
embeddings=self.embeddings,
docs=self.knowledge_base,
k=3
)
self.agent_prompt = ChatPromptTemplate.from_template("""
You are an advanced AI assistant with access to:
1. A knowledge base about technology and science
2. Wikipedia search capabilities
3. Mathematical calculation tools
4. Current date/time information
Context from knowledge base:
{context}
External tool results:
{tool_results}
Current date: {current_date}
User Query: {query}
Instructions:
- Use the knowledge base context when relevant
- If you need additional information, mention what external sources would help
- Be comprehensive but concise
- Show your reasoning process
- If calculations are needed, break them down step by step
Response:
""")
def _create_knowledge_base(self) -> List[Document]:
"""Create a comprehensive knowledge base"""
return [
Document(
page_content="Artificial Intelligence (AI) is transforming industries through ML, NLP, and computer vision. Key applications include autonomous vehicles, medical diagnosis, and financial trading.",
metadata={"topic": "AI", "category": "technology"}
),
Document(
page_content="Quantum computing uses quantum mechanical phenomena like superposition and entanglement to process information. Companies like IBM, Google, and Microsoft are leading quantum research.",
metadata={"topic": "quantum_computing", "category": "technology"}
),
Document(
page_content="Climate change is caused by greenhouse gas emissions, primarily CO2 from fossil fuels. Renewable energy sources are crucial for mitigation.",
metadata={"topic": "climate", "category": "environment"}
),
Document(
page_content="CRISPR-Cas9 is a revolutionary gene editing technology that allows precise DNA modifications. It has applications in treating genetic diseases and improving crops.",
metadata={"topic": "biotechnology", "category": "science"}
),
Document(
page_content="Blockchain technology enables decentralized, secure transactions without intermediaries. Beyond cryptocurrency, it has applications in supply chain, healthcare, and voting systems.",
metadata={"topic": "blockchain", "category": "technology"}
),
Document(
page_content="Space exploration has advanced with reusable rockets, Mars rovers, and commercial space travel. SpaceX, Blue Origin, and NASA are pioneering new missions.",
metadata={"topic": "space", "category": "science"}
),
Document(
page_content="Renewable energy costs have dropped dramatically. Solar & wind power are now cheaper than fossil fuels in many regions, driving global energy transition.",
metadata={"topic": "renewable_energy", "category": "environment"}
),
Document(
page_content="5G networks provide ultra-fast internet speeds and low latency, enabling IoT devices, autonomous vehicles, and augmented reality applications.",
metadata={"topic": "5G", "category": "technology"}
)
]
@tool
def wikipedia_search(query: str) -> str:
"""Search Wikipedia for additional information"""
try:
search_results = wikipedia.search(query, results=3)
if not search_results:
return f"No Wikipedia results found for '{query}'"
page = wikipedia.page(search_results[0])
summary = wikipedia.summary(search_results[0], sentences=3)
return f"Wikipedia: {page.title}n{summary}nURL: {page.url}"
except Exception as e:
return f"Wikipedia search error: {str(e)}"
@tool
def calculate(expression: str) -> str:
"""Perform mathematical calculations safely"""
try:
allowed_chars = set('0123456789+-*/.() ')
if not all(c in allowed_chars for c in expression):
return "Error: Only basic mathematical operations allowed"
result = eval(expression)
return f"Calculation: {expression} = {result}"
except Exception as e:
return f"Calculation error: {str(e)}"
def _format_docs(self, docs: List[Document]) -> str:
"""Format retrieved documents for context"""
if not docs:
return "No relevant documents found in knowledge base."
formatted = []
for i, doc in enumerate(docs, 1):
formatted.append(f"{i}. {doc.page_content}")
return "n".join(formatted)
def _get_current_date(self) -> str:
"""Get current date and time"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def process_query(self, query: str, use_wikipedia: bool = False,
calculate_expr: str = None) -> str:
"""Process a user query with optional external tools"""
relevant_docs = self.retriever.invoke(query)
context = self._format_docs(relevant_docs)
tool_results = []
if use_wikipedia:
wiki_keywords = self._extract_keywords(query)
if wiki_keywords:
wiki_result = self.wikipedia_search(wiki_keywords)
tool_results.append(f"Wikipedia Search: {wiki_result}")
if calculate_expr:
calc_result = self.calculate(calculate_expr)
tool_results.append(f"Calculation: {calc_result}")
tool_results_str = "n".join(tool_results) if tool_results else "No external tools used"
chain = (
{
"context": lambda x: context,
"tool_results": lambda x: tool_results_str,
"current_date": lambda x: self._get_current_date(),
"query": RunnablePassthrough()
}
| self.agent_prompt
| self.llm
| StrOutputParser()
)
return chain.invoke(query)
def _extract_keywords(self, query: str) -> str:
"""Extract key terms for Wikipedia search"""
important_words = []
stop_words = {'what', 'how', 'why', 'when', 'where', 'is', 'are', 'the', 'a', 'an'}
words = query.lower().split()
for word in words:
if word not in stop_words and len(word) > 3:
important_words.append(word)
return ' '.join(important_words[:3])
def interactive_session(self):
"""Run an interactive session with the agent"""
print("🤖 Advanced Nebius AI Agent Ready!")
print("Features: Knowledge retrieval, Wikipedia search, calculations")
print("Commands: 'wiki:<query>' for Wikipedia, 'calc:<expression>' for math")
print("Type 'quit' to exitn")
while True:
user_input = input("You: ").strip()
if user_input.lower() == 'quit':
print("Goodbye!")
break
use_wiki = False
calc_expr = None
if user_input.startswith('wiki:'):
use_wiki = True
user_input = user_input[5:].strip()
elif user_input.startswith('calc:'):
parts = user_input.split(':', 1)
if len(parts) == 2:
calc_expr = parts[1].strip()
user_input = f"Calculate {calc_expr}"
try:
response = self.process_query(user_input, use_wiki, calc_expr)
print(f"n🤖 Agent: {response}n")
except Exception as e:
print(f"Error: {e}n")
El núcleo de la implementación está encapsulado dentro de la clase AdvancedNebiusagent, que orquesta el razonamiento, la recuperación y la integración de herramientas. Inicializa un LLM de alto rendimiento de Nebius (Meta-Llama/Llama-3.3-70B-Instructo-Fast). Establece un retriever semántico basado en documentos integrados, formando una mini base de conocimiento que cubre temas como IA, computación cuántica, blockchain y más. Una plantilla de aviso dinámico guía las respuestas del agente al incluir el contexto recuperado, las salidas de herramientas externas y la fecha actual. Dos herramientas incorporadas, Wikipedia_Search y calculan, mejoran la funcionalidad del agente al proporcionar acceso al conocimiento enciclopédico externo y un cálculo aritmético seguro, respectivamente. El método Process_Query lo reúne todo, invocando dinámicamente la cadena rápida con contexto, herramientas y razonamiento para generar respuestas informativas y de múltiples fuentes. Una sesión interactiva opcional permite conversaciones en tiempo real con el agente, lo que permite el reconocimiento de prefijos especiales como wiki: o calc: para activar el soporte de herramientas externas.
if __name__ == "__main__":
agent = AdvancedNebiusAgent()
demo_queries = [
"What is artificial intelligence and how is it being used?",
"Tell me about quantum computing companies",
"How does climate change affect renewable energy adoption?"
]
print("=== Nebius AI Agent Demo ===n")
for i, query in enumerate(demo_queries, 1):
print(f"Demo {i}: {query}")
response = agent.process_query(query)
print(f"Response: {response}n")
print("-" * 50)
print("nDemo with Wikipedia:")
response_with_wiki = agent.process_query(
"What are the latest developments in space exploration?",
use_wikipedia=True
)
print(f"Response: {response_with_wiki}n")
print("Demo with calculation:")
response_with_calc = agent.process_query(
"If solar panel efficiency improved by 25%, what would be the new efficiency if current is 20%?",
calculate_expr="20 * 1.25"
)
print(f"Response: {response_with_calc}n")
Finalmente, mostramos las capacidades del agente a través de un conjunto de consultas de demostración. Comienza instanciando el Advancednebiusagent, seguido de un bucle que procesa indefinidas indicaciones relacionadas con la IA, la computación cuántica y el cambio climático, lo que demuestra la funcionalidad de recuperación. Luego realiza una consulta mejorada con Wikipedia sobre la exploración espacial, utilizando información externa en tiempo real para complementar la base de conocimiento. Finalmente, ejecuta un escenario matemático que involucra la eficiencia del panel solar para validar la herramienta de cálculo. Estas demostraciones ilustran colectivamente cómo Nebius, combinado con Langchain y las indicaciones bien estructuradas, permite el manejo inteligente de consultas multimodal en un asistente del mundo real.
En conclusión, este agente con alimentación de Nebius ejemplifica cómo combinar efectivamente el razonamiento impulsado por LLM con recuperación estructurada y uso de herramientas externas para construir un asistente de contexto capaz con contexto. Al integrar Langchain con las API de Nebius, el agente accede a una base de conocimiento curada, obtiene datos en vivo de Wikipedia y maneja las operaciones aritméticas con controles de seguridad. La arquitectura modular del tutorial, con plantillas de inmediato, encadenamiento dinámico y entradas personalizables, proporciona un poderoso plan para los desarrolladores que buscan crear sistemas inteligentes que superen la estática modelo de lenguaje grande (LLM) Respuestas.
Mira el Códigos. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, siéntete libre de seguirnos Gorjeo Y no olvides unirte a nuestro Subreddit de 100k+ ml y suscribirse a Nuestro boletín.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.