1
-
2
1
from typing import Any , Dict , List , Optional , Type , Union
3
- from holmes .config import Config
4
2
from holmes .core .llm import LLM
5
3
from litellm .types .utils import ModelResponse
6
4
from holmes .core .tool_calling_llm import ToolCallingLLM
7
5
from holmes .core .tools import Tool , ToolExecutor
8
6
from holmes .plugins .toolsets import load_builtin_toolsets
9
- from rich .console import Console
10
7
from pydantic import BaseModel
11
8
from holmes .plugins .prompts import load_and_render_prompt
12
- import sys
13
- class MyCustomLLM (LLM ):
14
9
10
+
11
+ class MyCustomLLM (LLM ):
15
12
def get_context_window_size (self ) -> int :
16
13
return 128000
17
14
@@ -21,36 +18,41 @@ def get_maximum_output_token(self) -> int:
21
18
def count_tokens_for_message (self , messages : list [dict ]) -> int :
22
19
return 1
23
20
24
- def completion (self , messages : List [Dict [str , Any ]], tools : Optional [List [Tool ]] = [], tool_choice : Optional [Union [str , dict ]] = None , response_format : Optional [Union [dict , Type [BaseModel ]]] = None , temperature :Optional [float ] = None , drop_params : Optional [bool ] = None ) -> ModelResponse :
25
- return ModelResponse (choices = [{
26
- "finish_reason" : "stop" ,
27
- "index" : 0 ,
28
- "message" : {
29
- "role" : "assistant" ,
30
- "content" : "There are no issues with your cluster"
31
- }
32
- }],
33
- usage = {
34
- "prompt_tokens" : 0 , # Integer
35
- "completion_tokens" : 0 ,
36
- "total_tokens" : 0
37
- }
38
- )
21
+ def completion (
22
+ self ,
23
+ messages : List [Dict [str , Any ]],
24
+ tools : Optional [List [Tool ]] = [],
25
+ tool_choice : Optional [Union [str , dict ]] = None ,
26
+ response_format : Optional [Union [dict , Type [BaseModel ]]] = None ,
27
+ temperature : Optional [float ] = None ,
28
+ drop_params : Optional [bool ] = None ,
29
+ ) -> ModelResponse :
30
+ return ModelResponse (
31
+ choices = [
32
+ {
33
+ "finish_reason" : "stop" ,
34
+ "index" : 0 ,
35
+ "message" : {
36
+ "role" : "assistant" ,
37
+ "content" : "There are no issues with your cluster" ,
38
+ },
39
+ }
40
+ ],
41
+ usage = {
42
+ "prompt_tokens" : 0 , # Integer
43
+ "completion_tokens" : 0 ,
44
+ "total_tokens" : 0 ,
45
+ },
46
+ )
39
47
40
48
41
49
def ask_holmes ():
42
- console = Console ()
43
-
44
50
prompt = "what issues do I have in my cluster"
45
51
46
52
system_prompt = load_and_render_prompt ("builtin://generic_ask.jinja2" )
47
53
48
54
tool_executor = ToolExecutor (load_builtin_toolsets ())
49
- ai = ToolCallingLLM (
50
- tool_executor ,
51
- max_steps = 10 ,
52
- llm = MyCustomLLM ()
53
- )
55
+ ai = ToolCallingLLM (tool_executor , max_steps = 10 , llm = MyCustomLLM ())
54
56
55
57
response = ai .prompt_call (system_prompt , prompt )
56
58
0 commit comments