File size: 3,634 Bytes
d26c7f3
f49023b
910ae58
 
d26c7f3
 
e4f6727
 
 
cc6bd3b
d26c7f3
4fb4269
d26c7f3
 
 
f49023b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d26c7f3
910ae58
4fb4269
cc6bd3b
98ada6c
e4f6727
 
 
d26c7f3
e4f6727
d26c7f3
f49023b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
from enum import Enum
from typing import Optional

from logger import Logger


TEST_MODE = False


class LLMInterface(Enum):
    OPENAI = "OpenAI"
    HUGGINGFACE = "HuggingFace"
    # Add your own if you like (then adjust the LLMFactory)


class AgentPreset:
    def __init__(self, interface: LLMInterface, model_name: str, temperature: Optional[float] = None, 
                 max_tokens: Optional[int] = None, repeat_penalty: Optional[float] = None):
        """
        Initialize an AgentPreset with LLM configuration parameters.
        
        Args:
            interface: The model interface to use (e.g., OPENAI, HUGGINGFACE)
            model_name: Name of the model to use
            temperature: Controls randomness in responses (0.0-1.0)
            max_tokens: Maximum number of tokens to generate in response
            repeat_penalty: Penalty for token repetition
        """
        self.interface = interface
        self.model_name = model_name
        self.temperature = temperature
        self.max_tokens = max_tokens
        self.repeat_penalty = repeat_penalty
    
    def get_interface(self) -> LLMInterface:
        """
        Get the model interface.
        
        Returns:
            LLMInterface: The interface used for this agent.
        """
        return self.interface
    
    def get_model_name(self) -> str:
        """
        Get the model name.
        
        Returns:
            str: The name of the model.
        """
        return self.model_name
    
    def get_temperature(self) -> float | None:
        """
        Get the temperature setting.
        
        Returns:
            float: The temperature value controlling randomness.
        """
        return self.temperature
    
    def get_max_tokens(self) -> int | None:
        """
        Get the maximum tokens setting.
        
        Returns:
            int: The maximum number of tokens for generation.
        """
        return self.max_tokens
    
    def get_repeat_penalty(self) -> float | None:
        """
        Get the repeat penalty setting.
        
        Returns:
            float: The penalty value for token repetition.
        """
        return self.repeat_penalty


class Args:
    LOGGER = Logger.set_logger()
    primary_llm_interface=LLMInterface.OPENAI
    # secondary_llm_interface=LLMInterface.HUGGINGFACE
    vlm_interface=LLMInterface.OPENAI
    primary_model="groot" if TEST_MODE else "qwen2.5-qwq-35b-eureka-cubed-abliterated-uncensored"
    secondary_model="groot" if TEST_MODE else "qwen2.5-7b-instruct-1m"
    vision_model="groot" if TEST_MODE else "qwen/qwen2.5-vl-7b"
    api_base="http://127.0.0.1:1234/v1"  # LM Studio local endpoint
    api_key="api_key"
    token = ""  # Not needed when using OpenAILike API
    # Agent presets
    PRIMARY_AGENT_PRESET = AgentPreset(
        primary_llm_interface, primary_model,
        temperature = None, max_tokens = 2048, repeat_penalty = None
        )
    SECONDARY_AGENT_PRESET = AgentPreset(
        primary_llm_interface, secondary_model,
        temperature = None, max_tokens = 2048, repeat_penalty = None
        )
    VISION_AGENT_PRESET = AgentPreset(
        vlm_interface, vision_model,
        temperature = None, max_tokens = 2048, repeat_penalty = None
        )
    class AlfredParams:
        # Maximum number of interactions between Manager and Solver
        MAX_INTERACTIONS = 6
        # Maximum number of interactions between Solver and it's assistants
        MAX_SOLVING_EFFORT = 6
        # Verification happening every few messages to see whether the manager agent got stuck
        AUDIT_INTERVAL = 3