以下代碼結合整個流程以生成輸出
user_input = input(“請在這裡輸入您的問題:(如果您想退出,請輸入 ‘exit’ 或 ‘bye’。)”)
我們將繼續問答,直到用戶說 ‘exit’ 或 ‘bye’
while user_input.strip().lower() != “exit” and user_input.strip().lower() != “bye”:
# 準備要發送給 OpenAI 的消息
messages = [
{
“role”: “system”,
“content”: “您是一位有幫助的客戶支持助手。請使用提供的工具來協助用戶。”,
},
{
“role”: “user”,
“content”: user_input,
}
]
# 使用提示指令、用戶輸入和函數定義(工具)調用 OpenAI
response = client.chat.completions.create(
model=GPT_MODEL, messages=messages, tools=tools
)
# 檢查模型是否檢測到工具調用
if response.choices[0].finish_reason == “tool_calls”:
# 獲取工具名稱和參數
tool_name = response.choices[0].message.tool_calls[0].function.name
fn_argument = response.choices[0].message.tool_calls[0].function.arguments
print(“檢測到工具”, tool_name)
print(“提取的函數參數:”, fn_argument)
# 調用與特定工具相關的函數
if tool_name == “stockPriceData”:
result = get_current_stock_price(fn_argument)
print(f”{json.loads(fn_argument)[‘ticker_symbol’]} 的股票價格:”, result)
elif tool_name == “currencyExchangeRate”:
result = currency_exchange_rate(fn_argument)
print(f”從 {json.loads(fn_argument)[‘from_country_currency’]} 到 {json.loads(fn_argument)[‘to_country_currency’]} 的匯率是 {result}。”)
# 檢查正常回覆
elif response.choices[0].finish_reason == “stop”:
print(“回覆:”, response.choices[0].message.content)
# 檢查 OpenAI 是否將我們的內容識別為受限內容
elif response.choices[0].finish_reason == “content_filter”:
print(“您的請求或回覆可能包含受限內容。”)
# 檢查我們是否超過最大上下文窗口
elif response.choices[0].finish_reason == “length”:
print(f”您的輸入標記超過了模型 `{GPT_MODEL}` 的最大輸入窗口。”)
# 繼續下一次迭代
user_input = input(“請在這裡輸入您的問題:”)
新聞來源
本文由 AI 台灣 使用 AI 編撰,內容僅供參考,請自行進行事實查核。加入 AI TAIWAN Google News,隨時掌握最新 AI 資訊!