-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathdevops_agent.py
More file actions
68 lines (59 loc) · 2.64 KB
/
Copy pathdevops_agent.py
File metadata and controls
68 lines (59 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import asyncio
import os
from agno.agent import Agent
from agno.knowledge import Knowledge
from agno.models.openai import OpenAIChat
from agno.models.anthropic import Claude
from agno.models.google.gemini import Gemini
from agno.vectordb.qdrant import Qdrant
from agno.knowledge.embedder.fastembed import FastEmbedEmbedder
from qdrant_client.http.models import VectorParams, Distance
from rich.console import Console
from rich.panel import Panel
from devops_agent.utils.prompt_generator_from_poml import prompt_from_poml
from qdrant_client.qdrant_client import QdrantClient
devops_prompt = prompt_from_poml('devops.poml')
# qclient = QdrantClient(url=os.environ.get('QDRANT_URL'), api_key=os.environ.get('QDRANT_API_KEY'))
# if not qclient.collection_exists("devops-memory"):
# qclient.create_collection(collection_name="devops-memory", vectors_config=VectorParams(size=768, distance=Distance.COSINE))
#
# vector_db = Qdrant(collection="devops-memory", url=os.environ.get('QDRANT_URL'),
# api_key=os.environ.get('QDRANT_API_KEY'),
# embedder=FastEmbedEmbedder(id="snowflake/snowflake-arctic-embed-m"))
#
# # Create knowledge base
# knowledge = Knowledge(vector_db=vector_db)
console = Console()
def execute_devops_agent(provider: str, user_query: str = None) -> Agent:
console.print(Panel.fit(
"[bold cyan]DevOps Agent Invoking...[/bold cyan]",
border_style="cyan"
))
llm_provider = provider.lower().strip()
if llm_provider == 'openai':
model = OpenAIChat(id="gpt-5-mini", api_key=os.environ.get('OPENAI_API_KEY'))
elif llm_provider == 'anthropic':
model = Claude(id="claude-sonnet-4-5-20250929", temperature=0.6, api_key=os.environ.get('ANTHROPIC_API_KEY'))
elif llm_provider == 'google':
model = Gemini(id="gemini-2.5-flash", temperature=0.6, api_key=os.environ.get('GEMINI_API_KEY'))
else:
model = OpenAIChat(id="gpt-5-mini"), #default
devops_assist = Agent(
name="DevOps Agent",
model=model,
description="You help answer questions about the devops domain.",
instructions=devops_prompt,
# knowledge=knowledge,
stream_intermediate_steps=True,
# add_knowledge_to_context=True,
# add_datetime_to_context=True,
# add_session_summary_to_context=True,
markdown=True,
)
# response = devops_assist.run(user_query, stream_intermediate_steps=True, retry=3)
#
# asyncio.run(
# knowledge.add_content_async(text_content=response.content, metadata={"agent_id": response.agent_id, "session_id": response.session_id})
# )
# return response.content
return devops_assist