Implementación del cliente Ollama y su credencial, integración de logging en base de datos, y mejoras en la gestión de herramientas MCP.
This commit is contained in:
+51
-30
@@ -11,29 +11,43 @@ from fastmcp.client.transports import StreamableHttpTransport
|
||||
from fastmcp.client import Client
|
||||
from src.Llms.MCPs.McpClient import MCPClient # ya tienes esta clase
|
||||
from src.Llms.MCPs.McpClient_Registry import ClientRegistry # o ajusta según tu estructura
|
||||
from src.Credenciales.ollama_credencial import OllamaCredencial
|
||||
from src.ConexionApis.Ollama_cliente import OllamaCliente
|
||||
from src.Llms.Modelos.Ollama_model import ModeloOllama
|
||||
|
||||
import asyncio
|
||||
|
||||
|
||||
async def main():
|
||||
|
||||
# Usar Credencial openai
|
||||
# # Usar Credencial openai
|
||||
|
||||
conexion_admin = PostgresConexion(db_credencial)
|
||||
repo = OpenAICredencialRepo(conexion_admin)
|
||||
credencial_openai = repo.get_by_id("OPAK20250513-61b29978b7604031014")
|
||||
cliente = OpenAICliente(credencial_openai)
|
||||
# conexion_admin = PostgresConexion(db_credencial)
|
||||
# repo = OpenAICredencialRepo(conexion_admin)
|
||||
# credencial_openai = repo.get_by_id("OPAK20250513-61b29978b7604031014")
|
||||
# if credencial_openai is None:
|
||||
# raise ValueError("No se encontró la credencial OpenAI con el ID proporcionado.")
|
||||
# cliente = OpenAICliente(credencial_openai)
|
||||
|
||||
|
||||
# Usar Credencial ollama
|
||||
credencial_ollama = OllamaCredencial(titulo="Ollama")
|
||||
|
||||
# crea el modelo (openai)
|
||||
cliente = OllamaCliente(credencial_ollama)
|
||||
|
||||
modelo = ModeloOpenAI(
|
||||
modelo = ModeloOllama(
|
||||
cliente=cliente,
|
||||
model="gpt-4o",
|
||||
temperature=1,
|
||||
top_p=1.0
|
||||
)
|
||||
model="llama3.1:8b")
|
||||
|
||||
|
||||
|
||||
# # crea el modelo (openai)
|
||||
|
||||
# modelo = ModeloOpenAI(
|
||||
# cliente=cliente,
|
||||
# model="gpt-4o",
|
||||
# temperature=1
|
||||
# )
|
||||
|
||||
# Le otorga memoria
|
||||
|
||||
@@ -70,20 +84,20 @@ async def main():
|
||||
agente2 = AgenteAI(
|
||||
modelo=modelo,
|
||||
nombre="Asistente Inteligente",
|
||||
descripcion="Un asistente conversacional versátil, capaz de resolver problemas, acceder a herramientas y proporcionar respuestas útiles.",
|
||||
system_prompt=(
|
||||
"Eres un asistente inteligente que ayuda al usuario a resolver tareas, responder preguntas y usar herramientas disponibles si es necesario. "
|
||||
"Debes razonar paso a paso, y si se detecta que una herramienta MCP es útil, actúa generando el bloque MCP apropiado sin dar más explicaciones. "
|
||||
"Siempre estructura tus respuestas con claridad, y termina con <END> cuando creas haber completado la tarea."
|
||||
),
|
||||
descripcion="",
|
||||
system_prompt="",
|
||||
# system_prompt = """
|
||||
# Eres un asistente general. No tienes acceso a herramientas externas ni herramientas MCP. No debes mencionar herramientas MCP, servidores ni bloques de código.
|
||||
# Responde de forma clara y amigable a cualquier pregunta general del usuario.
|
||||
# """.strip(),
|
||||
rol="asistente",
|
||||
objetivos=[
|
||||
"Resolver tareas del usuario",
|
||||
"Usar herramientas MCP si es útil",
|
||||
"Responder de forma clara y útil"
|
||||
# "Resolver tareas del usuario",
|
||||
# "Usar herramientas MCP si es útil",
|
||||
# "Responder de forma clara y útil"
|
||||
],
|
||||
|
||||
# max_iterations=3,
|
||||
max_iterations=0,
|
||||
# memoria=memoria,
|
||||
|
||||
mcp=registry # ← ✅ Integración del cliente MCP
|
||||
@@ -92,22 +106,29 @@ async def main():
|
||||
|
||||
# --- FUNCIÓN DE EJECUCIÓN ---
|
||||
async def probar_interaccion_stream():
|
||||
# # 🔌 Conectar a los servidores MCP registrados
|
||||
# await mcp_client.connect_all()
|
||||
print("🧠 Agente iniciado. Escribe 'salir' para terminar.\n")
|
||||
|
||||
print("Respuesta en streaming:\n")
|
||||
respuesta_gen = await agente2.interactuar_en_bucle(
|
||||
"¿Cuál es mi nombre de usuario en este sistema?",
|
||||
stream=True
|
||||
)
|
||||
while True:
|
||||
prompt = input("\n📝 Escribe tu pregunta: ")
|
||||
if prompt.strip().lower() in ("salir", "exit", "quit"):
|
||||
print("\n👋 Hasta pronto.")
|
||||
break
|
||||
|
||||
async for token in respuesta_gen:
|
||||
print(token, end="", flush=True)
|
||||
print("\n💬 Respuesta en streaming:\n")
|
||||
respuesta_gen = await agente2.interactuar_en_bucle(
|
||||
prompt=prompt,
|
||||
stream=True
|
||||
)
|
||||
|
||||
async for token in respuesta_gen:
|
||||
print(token, end="", flush=True)
|
||||
|
||||
|
||||
await probar_interaccion_stream()
|
||||
|
||||
|
||||
|
||||
|
||||
# Ejecutar
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
||||
Reference in New Issue
Block a user