mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-25 21:36:52 +08:00
Co-authored-by: openhands <openhands@all-hands.dev> Co-authored-by: Graham Neubig <neubig@gmail.com> Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from copy import deepcopy
|
|
|
|
from openhands.core.config.openhands_config import OpenHandsConfig
|
|
from openhands.llm.llm_registry import LLMRegistry
|
|
from openhands.server.services.conversation_stats import ConversationStats
|
|
from openhands.storage import get_file_store
|
|
from openhands.storage.data_models.settings import Settings
|
|
|
|
|
|
def setup_llm_config(config: OpenHandsConfig, settings: Settings) -> OpenHandsConfig:
|
|
# Copying this means that when we update variables they are not applied to the shared global configuration!
|
|
config = deepcopy(config)
|
|
|
|
llm_config = config.get_llm_config()
|
|
llm_config.model = settings.llm_model or ''
|
|
llm_config.api_key = settings.llm_api_key
|
|
llm_config.base_url = settings.llm_base_url
|
|
config.set_llm_config(llm_config)
|
|
return config
|
|
|
|
|
|
def create_registry_and_convo_stats(
|
|
config: OpenHandsConfig,
|
|
sid: str,
|
|
user_id: str | None,
|
|
user_settings: Settings | None = None,
|
|
) -> tuple[LLMRegistry, ConversationStats, OpenHandsConfig]:
|
|
user_config = config
|
|
if user_settings:
|
|
user_config = setup_llm_config(config, user_settings)
|
|
|
|
agent_cls = user_settings.agent if user_settings else None
|
|
llm_registry = LLMRegistry(user_config, agent_cls)
|
|
file_store = get_file_store(user_config.file_store, user_config.file_store_path)
|
|
convo_stats = ConversationStats(file_store, sid, user_id)
|
|
llm_registry.subscribe(convo_stats.register_llm)
|
|
return llm_registry, convo_stats, user_config
|