from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.highwayapi.ai/openai",
api_key="<Your API Key>",
)
model = "deepseek/deepseek-v3"
# Beispielfunktion zum Simulieren des Abrufs von Wetterdaten.
def get_weather(location):
"""Aktuelles Wetter für den angegebenen Ort abrufen"""
print("Funktion get_weather wird aufgerufen, Ort: ", location)
# In einer realen Anwendung müssen Sie hier eine externe Wetter-API aufrufen.
# Dies ist ein vereinfachtes Beispiel, das fest codierte Daten zurückgibt.
return json.dumps({"位置": location, "温度": "20 Grad Celsius"})
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Das Wetter für einen Ort abrufen; der Nutzer muss zuerst den Ort angeben",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Stadtinformation, z. B.: Shanghai",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "Wie ist das Wetter in Shanghai?"
}
]
# Anfrage senden und Antwort ausgeben
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# Prüfen Sie in Produktionsumgebungen, ob die Antwort einen Tool-Aufruf enthält
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
# Sicherstellen, dass der Tool-Aufruf im vorherigen Schritt definiert wurde
if tool_call:
# Konversationsverlauf erweitern und die Assistant-Tool-Aufrufnachricht hinzufügen
messages.append(response.choices[0].message)
function_name = tool_call.function.name
if function_name == "get_weather":
function_args = json.loads(tool_call.function.arguments)
# Funktion ausführen und Antwort abrufen
function_response = get_weather(
location=function_args.get("location"))
# Funktionsantwort zu den Nachrichten hinzufügen
messages.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"content": function_response,
}
)
# Endgültige Antwort vom Modell abrufen, einschließlich Funktionsergebnis
answer_response = client.chat.completions.create(
model=model,
messages=messages,
# Hinweis: Fügen Sie hier nicht den Parameter tools ein
)
print(answer_response.choices[0].message)