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()