HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/owl/examples/deepseek_de.py
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========


# Um diese Datei auszuführen, müssen Sie den DeepSeek API-Schlüssel konfigurieren.
# Sie können Ihren API-Schlüssel von der DeepSeek-Plattform erhalten: https://platform.deepseek.com/api_keys
# Setzen Sie ihn als DEEPSEEK_API_KEY="Ihr-API-Schlüssel" in Ihrer .env-Datei oder fügen Sie ihn Ihren Umgebungsvariablen hinzu.

import sys
from dotenv import load_dotenv

from camel.models import ModelFactory
from camel.toolkits import (
    ExcelToolkit,
    SearchToolkit,
    FileWriteToolkit,
    CodeExecutionToolkit,
)
from camel.types import ModelPlatformType, ModelType
from camel.societies import RolePlaying
from camel.logger import set_log_level

from owl.utils import run_society

import pathlib

set_log_level(level="DEBUG")

base_dir = pathlib.Path(__file__).parent.parent
env_path = base_dir / "owl" / ".env"
load_dotenv(dotenv_path=str(env_path))


def construct_society(question: str) -> RolePlaying:
    r"""Erstellt eine Gesellschaft von Agenten basierend auf der gestellten Frage.
    Parameter:
        question (str): Die Aufgabe oder Frage, die von der Gesellschaft bearbeitet werden soll.
    Rückgabe:
        RolePlaying: Eine konfigurierte Gesellschaft von Agenten, bereit die Frage zu bearbeiten.
    """
    # Erstellen Sie Modelle für verschiedene Komponenten
    models = {
        "user": ModelFactory.create(
            model_platform=ModelPlatformType.DEEPSEEK,
            model_type=ModelType.DEEPSEEK_CHAT,
            model_config_dict={"temperature": 0},
        ),
        "assistant": ModelFactory.create(
            model_platform=ModelPlatformType.DEEPSEEK,
            model_type=ModelType.DEEPSEEK_CHAT,
            model_config_dict={"temperature": 0},
        ),
    }

    # Konfigurieren Sie die Toolkits
    tools = [
        *CodeExecutionToolkit(sandbox="subprocess", verbose=True).get_tools(),
        SearchToolkit().search_duckduckgo,
        SearchToolkit().search_wiki,
        SearchToolkit().search_baidu,
        *ExcelToolkit().get_tools(),
        *FileWriteToolkit(output_dir="./").get_tools(),
    ]

    # Konfigurieren Sie Agentenrollen und Parameter
    user_agent_kwargs = {"model": models["user"]}
    assistant_agent_kwargs = {"model": models["assistant"], "tools": tools}

    # Konfigurieren Sie Aufgabenparameter
    task_kwargs = {
        "task_prompt": question,
        "with_task_specify": False,
    }

    # Erstellen und geben Sie die Gesellschaft zurück
    society = RolePlaying(
        **task_kwargs,
        user_role_name="user",
        user_agent_kwargs=user_agent_kwargs,
        assistant_role_name="assistant",
        assistant_agent_kwargs=assistant_agent_kwargs,
        output_language="German",
    )

    return society


def main():
    r"""Hauptfunktion zur Ausführung des OWL-Systems mit einer Beispielanfrage."""
    # Beispiel einer Forschungsfrage
    default_task = "Suche die neuesten Nachrichten über das OWL-Projekt, erstelle einen Bericht und speichere ihn lokal."

    # Überschreiben Sie die Standardaufgabe, falls ein Befehlszeilenargument angegeben wurde
    task = sys.argv[1] if len(sys.argv) > 1 else default_task

    # Erstellen und führen Sie die Gesellschaft aus
    society = construct_society(task)

    answer, chat_history, token_count = run_society(society)

    # Geben Sie das Ergebnis aus
    print(f"\033[94mAntwort: {answer}\033[0m")


if __name__ == "__main__":
    main()