|
| 1 | +{ |
| 2 | + "provider": "autogen_agentchat.teams.RoundRobinGroupChat", |
| 3 | + "component_type": "team", |
| 4 | + "version": 1, |
| 5 | + "component_version": 1, |
| 6 | + "description": "A team containing Observability Agent", |
| 7 | + "label": "A team containing Observability Agent", |
| 8 | + "config": { |
| 9 | + "participants": [ |
| 10 | + { |
| 11 | + "provider": "kagent.agents.SocietyOfMindAgent", |
| 12 | + "component_type": "agent", |
| 13 | + "version": 1, |
| 14 | + "component_version": 1, |
| 15 | + "description": "An agent which runs a team of agents", |
| 16 | + "label": "society_of_mind_agent", |
| 17 | + "config": { |
| 18 | + "name": "society_of_mind_agent", |
| 19 | + "team": { |
| 20 | + "provider": "autogen_agentchat.teams.RoundRobinGroupChat", |
| 21 | + "component_type": "team", |
| 22 | + "version": 1, |
| 23 | + "component_version": 1, |
| 24 | + "description": "A team containing Observability Agent", |
| 25 | + "label": "RoundRobinGroupChat", |
| 26 | + "config": { |
| 27 | + "participants": [ |
| 28 | + { |
| 29 | + "provider": "autogen_agentchat.agents.AssistantAgent", |
| 30 | + "component_type": "agent", |
| 31 | + "version": 1, |
| 32 | + "component_version": 1, |
| 33 | + "description": "This is an example agent that combines Kubernetes, Prometheus and Grafana tools.", |
| 34 | + "label": "Sample Observability Agent", |
| 35 | + "config": { |
| 36 | + "name": "observability", |
| 37 | + "model_client": { |
| 38 | + "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient", |
| 39 | + "component_type": "model", |
| 40 | + "version": 1, |
| 41 | + "component_version": 1, |
| 42 | + "description": "Chat completion client for OpenAI hosted models.", |
| 43 | + "label": "OpenAIChatCompletionClient", |
| 44 | + "config": { "model": "gpt-4o", "stream_options": { "include_usage": true } } |
| 45 | + }, |
| 46 | + "tools": [ |
| 47 | + { |
| 48 | + "provider": "kagent.tools.k8s.GetResources", |
| 49 | + "description": "Get information about resources in Kubernetes. Always prefer output type `wide` unless otherwise specified. 'all' is NOT an option, you must specify a resource type.", |
| 50 | + "component_type": "tool", |
| 51 | + "component_version": 1, |
| 52 | + "version": 1, |
| 53 | + "label": "GetResources", |
| 54 | + "config": {} |
| 55 | + }, |
| 56 | + { |
| 57 | + "provider": "kagent.tools.k8s.GetAvailableAPIResources", |
| 58 | + "description": "Gets the supported API resources in Kubernetes.", |
| 59 | + "component_type": "tool", |
| 60 | + "component_version": 1, |
| 61 | + "version": 1, |
| 62 | + "label": "GetAvailableAPIResources", |
| 63 | + "config": {} |
| 64 | + }, |
| 65 | + { |
| 66 | + "provider": "kagent.tools.prometheus.QueryTool", |
| 67 | + "description": "Executes instant queries against Prometheus to retrieve current metric values.\n Use this tool when you need to get the latest values of metrics or perform calculations on current data.\n The query must be a valid PromQL expression.", |
| 68 | + "component_type": "tool", |
| 69 | + "component_version": 1, |
| 70 | + "version": 1, |
| 71 | + "label": "QueryTool", |
| 72 | + "config": { "base_url": "http://localhost:9090/api/v1", "username": "", "password": "" } |
| 73 | + }, |
| 74 | + { |
| 75 | + "provider": "kagent.tools.prometheus.GeneratePromQLTool", |
| 76 | + "description": "GeneratePromQLTool generates PromQL queries from natural language descriptions.", |
| 77 | + "component_type": "tool", |
| 78 | + "component_version": 1, |
| 79 | + "version": 1, |
| 80 | + "label": "GeneratePromQLTool", |
| 81 | + "config": { "model": "gpt-4o", "openai_api_key": "", "temperature": 0 } |
| 82 | + }, |
| 83 | + { |
| 84 | + "provider": "kagent.tools.grafana.DashboardManagementTool", |
| 85 | + "description": "Perform various operations on Grafana dashboards including:\n - search: Search for dashboards with filtering and pagination\n - get: Retrieve a specific dashboard by UID\n - create/update: Create a new dashboard or update an existing one\n - delete: Delete a dashboard by UID\n - get_versions: List all versions of a dashboard\n - get_version: Retrieve a specific version of a dashboard\n - restore_version: Restore a dashboard to a previous version\n - get_permissions: Get dashboard permissions\n - update_permissions: Update dashboard permissions\n - calculate_diff: Calculate difference between dashboard versions\n ", |
| 86 | + "component_type": "tool", |
| 87 | + "component_version": 1, |
| 88 | + "version": 1, |
| 89 | + "label": "DashboardManagementTool", |
| 90 | + "config": { "base_url": "http://localhost:3000/api", "username": "", "password": "", "api_key": "" } |
| 91 | + } |
| 92 | + ], |
| 93 | + "handoffs": [], |
| 94 | + "model_context": { |
| 95 | + "provider": "autogen_core.model_context.UnboundedChatCompletionContext", |
| 96 | + "component_type": "chat_completion_context", |
| 97 | + "version": 1, |
| 98 | + "component_version": 1, |
| 99 | + "description": "An unbounded chat completion context that keeps a view of the all the messages.", |
| 100 | + "label": "UnboundedChatCompletionContext", |
| 101 | + "config": {} |
| 102 | + }, |
| 103 | + "description": "This is an example agent that combines Kubernetes, Prometheus and Grafana tools.", |
| 104 | + "system_message": "You're a friendly and helpful agent that uses tools to help users with observability questions. You have access to the following tools:\n\n- Kubernetes tools to verify existence of services, pods and other resources\n- PromQL query generator tool that knows how to create a valid PromQL from user queries\n- Prometheus tools to query Prometheus for metrics, labels\n- Grafana tools for creating and managing dashboards\n\n# Instructions\n- If user question is unclear, ask for clarification before running any tools\n- Always be helpful and friendly\n- If you don't know how to answer the question DO NOT make things up, tell the user \"Sorry, I don't know how to answer that\" and ask them to clarify the question further\n- Before creating any Prometheus queries or Grafana dashboards make sure the actual resources exist in Kubernetes. For example, if a user asks for metrics for a service, you will use Kubernetes to to verify whether the resource exists before creating any queries or dashboards.\n\n# Response format\n- ALWAYS format your response as Markdown\n- Your response will include a summary of actions you took and an explanation of the result\n- If you created any artifacts such as files or resources, you will include those in your response as well ", |
| 105 | + "reflect_on_tool_use": false, |
| 106 | + "tool_call_summary_format": "{result}", |
| 107 | + "model_client_stream": true |
| 108 | + } |
| 109 | + } |
| 110 | + ], |
| 111 | + "termination_condition": { |
| 112 | + "provider": "kagent.terminations.TextMessageTermination", |
| 113 | + "component_type": "termination", |
| 114 | + "version": 1, |
| 115 | + "component_version": 1, |
| 116 | + "description": "Terminate the conversation if a specific text is mentioned.", |
| 117 | + "label": "TextMessageTermination", |
| 118 | + "config": { "source": "observability" } |
| 119 | + }, |
| 120 | + "model_client": { |
| 121 | + "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient", |
| 122 | + "component_type": "model", |
| 123 | + "version": 1, |
| 124 | + "component_version": 1, |
| 125 | + "description": "Chat completion client for OpenAI hosted models.", |
| 126 | + "label": "OpenAIChatCompletionClient", |
| 127 | + "config": { "model": "gpt-4o", "stream_options": { "include_usage": true } } |
| 128 | + } |
| 129 | + } |
| 130 | + }, |
| 131 | + "model_client": { |
| 132 | + "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient", |
| 133 | + "component_type": "model", |
| 134 | + "version": 1, |
| 135 | + "component_version": 1, |
| 136 | + "description": "Chat completion client for OpenAI hosted models.", |
| 137 | + "label": "OpenAIChatCompletionClient", |
| 138 | + "config": { "model": "gpt-4o", "stream_options": { "include_usage": true } } |
| 139 | + }, |
| 140 | + "model_context": { |
| 141 | + "provider": "autogen_core.model_context.UnboundedChatCompletionContext", |
| 142 | + "component_type": "chat_completion_context", |
| 143 | + "version": 1, |
| 144 | + "component_version": 1, |
| 145 | + "description": "An unbounded chat completion context that keeps a view of the all the messages.", |
| 146 | + "label": "UnboundedChatCompletionContext", |
| 147 | + "config": {} |
| 148 | + }, |
| 149 | + "model_client_stream": true |
| 150 | + } |
| 151 | + }, |
| 152 | + { |
| 153 | + "provider": "autogen_agentchat.agents.UserProxyAgent", |
| 154 | + "component_type": "agent", |
| 155 | + "version": 1, |
| 156 | + "component_version": 1, |
| 157 | + "description": "An agent that represents a user.", |
| 158 | + "label": "kagent_user", |
| 159 | + "config": { "name": "kagent_user", "description": "Human user" } |
| 160 | + } |
| 161 | + ], |
| 162 | + "termination_condition": { |
| 163 | + "provider": "autogen_agentchat.conditions.TextMentionTermination", |
| 164 | + "component_type": "termination", |
| 165 | + "version": 1, |
| 166 | + "component_version": 1, |
| 167 | + "description": "Terminate the conversation if a specific text is mentioned.", |
| 168 | + "label": "TextMentionTermination", |
| 169 | + "config": { "text": "TERMINATE" } |
| 170 | + }, |
| 171 | + "model_client": { |
| 172 | + "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient", |
| 173 | + "component_type": "model", |
| 174 | + "version": 1, |
| 175 | + "component_version": 1, |
| 176 | + "description": "Chat completion client for OpenAI hosted models.", |
| 177 | + "label": "OpenAIChatCompletionClient", |
| 178 | + "config": { "model": "gpt-4o", "stream_options": { "include_usage": true } } |
| 179 | + } |
| 180 | + } |
| 181 | +} |
0 commit comments