Spaces:
Running
Running
foxcat_chatbot_avatar_url
Browse files- app.py +100 -31
- chatbot.py +22 -8
app.py
CHANGED
@@ -2051,17 +2051,42 @@ def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_mo
|
|
2051 |
error_msg = "此次對話超過上限(對話一輪10次)"
|
2052 |
raise gr.Error(error_msg)
|
2053 |
|
2054 |
-
if not ai_name in ["
|
2055 |
-
ai_name = "
|
2056 |
-
|
2057 |
-
if ai_name == "jutor":
|
2058 |
-
|
2059 |
-
elif ai_name == "claude3":
|
2060 |
-
|
2061 |
-
elif ai_name == "groq":
|
2062 |
-
|
2063 |
-
else:
|
2064 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2065 |
|
2066 |
if isinstance(trascript_state, str):
|
2067 |
simple_transcript = json.loads(trascript_state)
|
@@ -2088,14 +2113,14 @@ def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_mo
|
|
2088 |
"content_subject": content_subject,
|
2089 |
"content_grade": content_grade,
|
2090 |
"jutor_chat_key": JUTOR_CHAT_KEY,
|
2091 |
-
"
|
2092 |
"ai_client": ai_client,
|
2093 |
"instructions": instructions
|
2094 |
}
|
2095 |
|
2096 |
try:
|
2097 |
chatbot = Chatbot(chatbot_config)
|
2098 |
-
response_completion = chatbot.chat(user_message, chat_history, socratic_mode,
|
2099 |
except Exception as e:
|
2100 |
print(f"Error: {e}")
|
2101 |
response_completion = "學習精靈有點累,請稍後再試!"
|
@@ -2413,15 +2438,17 @@ def chatbot_select(chatbot_name):
|
|
2413 |
chatbot_open_ai_visible = gr.update(visible=False)
|
2414 |
chatbot_open_ai_streaming_visible = gr.update(visible=False)
|
2415 |
chatbot_jutor_visible = gr.update(visible=False)
|
|
|
2416 |
|
2417 |
if chatbot_name == "chatbot_open_ai":
|
2418 |
chatbot_open_ai_visible = gr.update(visible=True)
|
2419 |
elif chatbot_name == "chatbot_open_ai_streaming":
|
2420 |
chatbot_open_ai_streaming_visible = gr.update(visible=True)
|
2421 |
-
|
2422 |
chatbot_jutor_visible = gr.update(visible=True)
|
|
|
2423 |
|
2424 |
-
return chatbot_select_accordion_visible, chatbot_open_ai_visible, chatbot_open_ai_streaming_visible, chatbot_jutor_visible
|
2425 |
|
2426 |
# --- Slide mode ---
|
2427 |
def update_slide(direction):
|
@@ -2635,18 +2662,46 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2635 |
chatbot_open_ai_streaming_select_btn = gr.Button("👆選擇【飛特音速】", elem_id="streaming_chatbot_btn", visible=True, variant="primary")
|
2636 |
gr.Markdown(value=streaming_chatbot_description, visible=True)
|
2637 |
with gr.Column(scale=1, variant="panel"):
|
2638 |
-
|
2639 |
-
|
2640 |
也可以陪你一起學習本次的內容,有什麼問題都可以問我喔!\n
|
2641 |
🤔 如果你不知道怎麼發問,可以點擊左下方的問題一、問題二、問題三,我會幫你生成問題!\n
|
2642 |
🗣️ 也可以點擊右下方用語音輸入,我會幫你轉換成文字,厲害吧!\n
|
2643 |
🔠 或是直接鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
|
2644 |
💤 精靈們體力都有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!\n
|
2645 |
"""
|
2646 |
-
|
2647 |
-
gr.Image(value=
|
2648 |
-
|
2649 |
-
gr.Markdown(value=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2650 |
|
2651 |
with gr.Row("飛特精靈") as chatbot_open_ai:
|
2652 |
with gr.Column():
|
@@ -2710,11 +2765,15 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2710 |
""",
|
2711 |
]]
|
2712 |
ai_chatbot_bot_avatar = "https://storage.googleapis.com/wpassets.junyiacademy.org/1/2019/11/%E5%9B%9B%E6%A0%BC%E6%95%85%E4%BA%8B-04.jpg"
|
2713 |
-
ai_name = gr.Dropdown(
|
2714 |
-
|
2715 |
-
|
2716 |
-
|
2717 |
-
|
|
|
|
|
|
|
|
|
2718 |
)
|
2719 |
ai_chatbot = gr.Chatbot(avatar_images=[user_avatar, ai_chatbot_bot_avatar], label="ai_chatbot", show_share_button=False, likeable=True, show_label=False, latex_delimiters=latex_delimiters, value=ai_chatbot_greeting)
|
2720 |
ai_chatbot_socratic_mode_btn = gr.Checkbox(label="蘇格拉底家教助理模式", value=True, visible=False)
|
@@ -2915,21 +2974,31 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2915 |
chatbot_open_ai_select_btn.click(
|
2916 |
chatbot_select,
|
2917 |
inputs=[chatbot_open_ai_name],
|
2918 |
-
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor]
|
2919 |
)
|
2920 |
chatbot_open_ai_streaming_select_btn.click(
|
2921 |
chatbot_select,
|
2922 |
inputs=[chatbot_open_ai_streaming_name],
|
2923 |
-
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor]
|
2924 |
).then(
|
2925 |
create_thread_id,
|
2926 |
inputs=[],
|
2927 |
outputs=[streaming_chat_thread_id_state]
|
2928 |
)
|
2929 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2930 |
chatbot_select,
|
2931 |
-
inputs=[
|
2932 |
-
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor]
|
2933 |
)
|
2934 |
|
2935 |
# OPENAI ASSISTANT CHATBOT 模式
|
|
|
2051 |
error_msg = "此次對話超過上限(對話一輪10次)"
|
2052 |
raise gr.Error(error_msg)
|
2053 |
|
2054 |
+
if not ai_name in ["foxcat", "lili", "maimai"]:
|
2055 |
+
ai_name = "foxcat"
|
2056 |
+
|
2057 |
+
# if ai_name == "jutor":
|
2058 |
+
# ai_client = ""
|
2059 |
+
# elif ai_name == "claude3":
|
2060 |
+
# ai_client = BEDROCK_CLIENT
|
2061 |
+
# elif ai_name == "groq":
|
2062 |
+
# ai_client = GROQ_CLIENT
|
2063 |
+
# else:
|
2064 |
+
# ai_client = ""
|
2065 |
+
|
2066 |
+
ai_name_clients_model = {
|
2067 |
+
"foxcat": {
|
2068 |
+
"ai_name": "foxcat",
|
2069 |
+
"ai_client": GROQ_CLIENT,
|
2070 |
+
"ai_model_name": "groq_llama3",
|
2071 |
+
},
|
2072 |
+
"lili": {
|
2073 |
+
"ai_name": "lili",
|
2074 |
+
"ai_client": BEDROCK_CLIENT,
|
2075 |
+
"ai_model_name": "claude3",
|
2076 |
+
},
|
2077 |
+
# "maimai": {
|
2078 |
+
# "ai_name": "maimai",
|
2079 |
+
# "ai_client": OPEN_AI_CLIENT,
|
2080 |
+
# "ai_model_name": "openai",
|
2081 |
+
# }
|
2082 |
+
"maimai": {
|
2083 |
+
"ai_name": "maimai",
|
2084 |
+
"ai_client": GROQ_CLIENT,
|
2085 |
+
"ai_model_name": "groq_mixtral",
|
2086 |
+
}
|
2087 |
+
}
|
2088 |
+
ai_client = ai_name_clients_model.get(ai_name, "foxcat")["ai_client"]
|
2089 |
+
ai_model_name = ai_name_clients_model.get(ai_name, "foxcat")["ai_model_name"]
|
2090 |
|
2091 |
if isinstance(trascript_state, str):
|
2092 |
simple_transcript = json.loads(trascript_state)
|
|
|
2113 |
"content_subject": content_subject,
|
2114 |
"content_grade": content_grade,
|
2115 |
"jutor_chat_key": JUTOR_CHAT_KEY,
|
2116 |
+
"ai_model_name": ai_model_name,
|
2117 |
"ai_client": ai_client,
|
2118 |
"instructions": instructions
|
2119 |
}
|
2120 |
|
2121 |
try:
|
2122 |
chatbot = Chatbot(chatbot_config)
|
2123 |
+
response_completion = chatbot.chat(user_message, chat_history, socratic_mode, ai_model_name)
|
2124 |
except Exception as e:
|
2125 |
print(f"Error: {e}")
|
2126 |
response_completion = "學習精靈有點累,請稍後再試!"
|
|
|
2438 |
chatbot_open_ai_visible = gr.update(visible=False)
|
2439 |
chatbot_open_ai_streaming_visible = gr.update(visible=False)
|
2440 |
chatbot_jutor_visible = gr.update(visible=False)
|
2441 |
+
ai_name_update = gr.update(value="jutor")
|
2442 |
|
2443 |
if chatbot_name == "chatbot_open_ai":
|
2444 |
chatbot_open_ai_visible = gr.update(visible=True)
|
2445 |
elif chatbot_name == "chatbot_open_ai_streaming":
|
2446 |
chatbot_open_ai_streaming_visible = gr.update(visible=True)
|
2447 |
+
else:
|
2448 |
chatbot_jutor_visible = gr.update(visible=True)
|
2449 |
+
ai_name_update = gr.update(value=chatbot_name)
|
2450 |
|
2451 |
+
return chatbot_select_accordion_visible, chatbot_open_ai_visible, chatbot_open_ai_streaming_visible, chatbot_jutor_visible, ai_name_update
|
2452 |
|
2453 |
# --- Slide mode ---
|
2454 |
def update_slide(direction):
|
|
|
2662 |
chatbot_open_ai_streaming_select_btn = gr.Button("👆選擇【飛特音速】", elem_id="streaming_chatbot_btn", visible=True, variant="primary")
|
2663 |
gr.Markdown(value=streaming_chatbot_description, visible=True)
|
2664 |
with gr.Column(scale=1, variant="panel"):
|
2665 |
+
foxcat_chatbot_avatar_url = "https://storage.googleapis.com/wpassets.junyiacademy.org/1/2020/06/%E7%A7%91%E5%AD%B8%E5%BE%BD%E7%AB%A0-2-150x150.png"
|
2666 |
+
foxcat_chatbot_description = """Hi,我是【狐狸貓】,\n
|
2667 |
也可以陪你一起學習本次的內容,有什麼問題都可以問我喔!\n
|
2668 |
🤔 如果你不知道怎麼發問,可以點擊左下方的問題一、問題二、問題三,我會幫你生成問題!\n
|
2669 |
🗣️ 也可以點擊右下方用語音輸入,我會幫你轉換成文字,厲害吧!\n
|
2670 |
🔠 或是直接鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
|
2671 |
💤 精靈們體力都有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!\n
|
2672 |
"""
|
2673 |
+
foxcat_chatbot_name = gr.State("foxcat")
|
2674 |
+
gr.Image(value=foxcat_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2675 |
+
foxcat_chatbot_select_btn = gr.Button("👆選擇【狐狸貓】", visible=True, variant="primary")
|
2676 |
+
gr.Markdown(value=foxcat_chatbot_description, visible=True)
|
2677 |
+
# 梨梨
|
2678 |
+
with gr.Column(scale=1, variant="panel"):
|
2679 |
+
lili_chatbot_avatar_url = "https://junyitopicimg.s3.amazonaws.com/live/v1283-new-topic-44-icon.png?v=20230529071206714"
|
2680 |
+
lili_chatbot_description = """你好,我是溫柔的【梨梨】, \n
|
2681 |
+
很高興可以在這裡陪伴你學習。如果你有任何疑問,請隨時向我提出哦! \n
|
2682 |
+
🤔 如果你在思考如何提問,可以嘗試點擊下方的「問題一」、「問題二」或「問題三」,我會為你生成一些問題來幫助你啟動思考。 \n
|
2683 |
+
🗣️ 你也可以使用右下角的語音輸入功能,讓我幫你將語音轉化為文字,這樣可以更加方便快捷。\n
|
2684 |
+
🔠 當然,你也可以直接通過鍵盤輸入你的問題,我將盡我所能為你提供答案。\n
|
2685 |
+
💤 請理解,即使是我們這些精靈,也有疲憊的時候,每次學習後我能回答的問題有限。如果達到上限,讓我稍作休息之後再繼續回答你的問題吧!
|
2686 |
+
"""
|
2687 |
+
lili_chatbot_name = gr.State("lili")
|
2688 |
+
gr.Image(value=lili_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2689 |
+
lili_chatbot_select_btn = gr.Button("👆選擇【梨梨】", visible=True, variant="primary")
|
2690 |
+
gr.Markdown(value=lili_chatbot_description, visible=True)
|
2691 |
+
# 麥麥
|
2692 |
+
with gr.Column(scale=1, variant="panel"):
|
2693 |
+
maimai_chatbot_avatar_url = "https://storage.googleapis.com/wpassets.junyiacademy.org/1/2020/07/%E6%80%9D%E8%80%83%E5%8A%9B%E8%B6%85%E4%BA%BA%E5%BE%BD%E7%AB%A0_%E5%B7%A5%E4%BD%9C%E5%8D%80%E5%9F%9F-1-%E8%A4%87%E6%9C%AC-150x150.png"
|
2694 |
+
maimai_chatbot_description = """Hi,我是迷人的【麥麥】,\n
|
2695 |
+
我在這裡等著和你一起探索新知,任何疑問都可以向我提出!\n
|
2696 |
+
🤔 如果你不知道從哪裡開始,試試左下方的「問題一」、「問題二」、「問題三」,我會為你提供一些啟發思考的問題。\n
|
2697 |
+
🗣️ 你也可以利用右下角的語音輸入功能,讓我將你的語音轉成文字,是不是很酷?\n
|
2698 |
+
🔠 當然,你也可以直接透過鍵盤向我發問,我會全力以赴來回答你的每一個問題。\n
|
2699 |
+
💤 我們這些精靈也需要休息,每次學習我們只能回答十個問題,當達到上限時,請給我一點時間充電再繼續。\n
|
2700 |
+
"""
|
2701 |
+
maimai_chatbot_name = gr.State("maimai")
|
2702 |
+
gr.Image(value=maimai_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2703 |
+
maimai_chatbot_select_btn = gr.Button("👆選擇【麥麥】", visible=True, variant="primary")
|
2704 |
+
gr.Markdown(value=maimai_chatbot_description, visible=True)
|
2705 |
|
2706 |
with gr.Row("飛特精靈") as chatbot_open_ai:
|
2707 |
with gr.Column():
|
|
|
2765 |
""",
|
2766 |
]]
|
2767 |
ai_chatbot_bot_avatar = "https://storage.googleapis.com/wpassets.junyiacademy.org/1/2019/11/%E5%9B%9B%E6%A0%BC%E6%95%85%E4%BA%8B-04.jpg"
|
2768 |
+
ai_name = gr.Dropdown(
|
2769 |
+
label="選擇 AI 助理",
|
2770 |
+
choices=[
|
2771 |
+
("梨梨","lili"),
|
2772 |
+
("麥麥","maimai"),
|
2773 |
+
("狐狸貓","foxcat")
|
2774 |
+
],
|
2775 |
+
value="foxcat",
|
2776 |
+
visible=False
|
2777 |
)
|
2778 |
ai_chatbot = gr.Chatbot(avatar_images=[user_avatar, ai_chatbot_bot_avatar], label="ai_chatbot", show_share_button=False, likeable=True, show_label=False, latex_delimiters=latex_delimiters, value=ai_chatbot_greeting)
|
2779 |
ai_chatbot_socratic_mode_btn = gr.Checkbox(label="蘇格拉底家教助理模式", value=True, visible=False)
|
|
|
2974 |
chatbot_open_ai_select_btn.click(
|
2975 |
chatbot_select,
|
2976 |
inputs=[chatbot_open_ai_name],
|
2977 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor, ai_name]
|
2978 |
)
|
2979 |
chatbot_open_ai_streaming_select_btn.click(
|
2980 |
chatbot_select,
|
2981 |
inputs=[chatbot_open_ai_streaming_name],
|
2982 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor, ai_name]
|
2983 |
).then(
|
2984 |
create_thread_id,
|
2985 |
inputs=[],
|
2986 |
outputs=[streaming_chat_thread_id_state]
|
2987 |
)
|
2988 |
+
foxcat_chatbot_select_btn.click(
|
2989 |
+
chatbot_select,
|
2990 |
+
inputs=[foxcat_chatbot_name],
|
2991 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor, ai_name]
|
2992 |
+
)
|
2993 |
+
lili_chatbot_select_btn.click(
|
2994 |
+
chatbot_select,
|
2995 |
+
inputs=[lili_chatbot_name],
|
2996 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor, ai_name]
|
2997 |
+
)
|
2998 |
+
maimai_chatbot_select_btn.click(
|
2999 |
chatbot_select,
|
3000 |
+
inputs=[maimai_chatbot_name],
|
3001 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor, ai_name]
|
3002 |
)
|
3003 |
|
3004 |
# OPENAI ASSISTANT CHATBOT 模式
|
chatbot.py
CHANGED
@@ -39,10 +39,11 @@ class Chatbot:
|
|
39 |
return key_moments_text
|
40 |
|
41 |
|
42 |
-
def chat(self, user_message, chat_history, socratic_mode=False, service_type='
|
43 |
messages = self.prepare_messages(chat_history, user_message)
|
44 |
system_prompt = self.instructions
|
45 |
-
|
|
|
46 |
response_text = self.chat_with_service(service_type, system_prompt, messages)
|
47 |
return response_text
|
48 |
else:
|
@@ -66,10 +67,12 @@ class Chatbot:
|
|
66 |
return messages
|
67 |
|
68 |
def chat_with_service(self, service_type, system_prompt, messages):
|
69 |
-
if service_type == '
|
70 |
return self.chat_with_jutor(system_prompt, messages)
|
71 |
-
elif service_type == '
|
72 |
-
return self.chat_with_groq(system_prompt, messages)
|
|
|
|
|
73 |
elif service_type == 'claude3':
|
74 |
return self.chat_with_claude3(system_prompt, messages)
|
75 |
else:
|
@@ -83,6 +86,8 @@ class Chatbot:
|
|
83 |
"x-api-key": self.jutor_chat_key,
|
84 |
}
|
85 |
model = "gpt-4-turbo"
|
|
|
|
|
86 |
# model = "gpt-3.5-turbo-0125"
|
87 |
data = {
|
88 |
"data": {
|
@@ -99,11 +104,19 @@ class Chatbot:
|
|
99 |
response_completion = response_data['data']['choices'][0]['message']['content'].strip()
|
100 |
return response_completion
|
101 |
|
102 |
-
def chat_with_groq(self, system_prompt, messages):
|
103 |
# system_prompt insert to messages 的最前面 {"role": "system", "content": system_prompt}
|
104 |
messages.insert(0, {"role": "system", "content": system_prompt})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
request_payload = {
|
106 |
-
"model":
|
107 |
"messages": messages,
|
108 |
"max_tokens": 500 # 設定一個較大的值,可根據需要調整
|
109 |
}
|
@@ -118,6 +131,8 @@ class Chatbot:
|
|
118 |
|
119 |
model_id = "anthropic.claude-3-sonnet-20240229-v1:0"
|
120 |
# model_id = "anthropic.claude-3-haiku-20240307-v1:0"
|
|
|
|
|
121 |
kwargs = {
|
122 |
"modelId": model_id,
|
123 |
"contentType": "application/json",
|
@@ -129,7 +144,6 @@ class Chatbot:
|
|
129 |
"messages": messages
|
130 |
})
|
131 |
}
|
132 |
-
print(messages)
|
133 |
# 建立 message API,讀取回應
|
134 |
bedrock_client = self.ai_client
|
135 |
response = bedrock_client.invoke_model(**kwargs)
|
|
|
39 |
return key_moments_text
|
40 |
|
41 |
|
42 |
+
def chat(self, user_message, chat_history, socratic_mode=False, service_type='openai'):
|
43 |
messages = self.prepare_messages(chat_history, user_message)
|
44 |
system_prompt = self.instructions
|
45 |
+
service_type_list = ['openai', 'claude3', 'groq_llama3', 'groq_mixtral']
|
46 |
+
if service_type in service_type_list:
|
47 |
response_text = self.chat_with_service(service_type, system_prompt, messages)
|
48 |
return response_text
|
49 |
else:
|
|
|
67 |
return messages
|
68 |
|
69 |
def chat_with_service(self, service_type, system_prompt, messages):
|
70 |
+
if service_type == 'openai':
|
71 |
return self.chat_with_jutor(system_prompt, messages)
|
72 |
+
elif service_type == 'groq_llama3':
|
73 |
+
return self.chat_with_groq(service_type, system_prompt, messages)
|
74 |
+
elif service_type == 'groq_mixtral':
|
75 |
+
return self.chat_with_groq(service_type, system_prompt, messages)
|
76 |
elif service_type == 'claude3':
|
77 |
return self.chat_with_claude3(system_prompt, messages)
|
78 |
else:
|
|
|
86 |
"x-api-key": self.jutor_chat_key,
|
87 |
}
|
88 |
model = "gpt-4-turbo"
|
89 |
+
print("======model======")
|
90 |
+
print(model)
|
91 |
# model = "gpt-3.5-turbo-0125"
|
92 |
data = {
|
93 |
"data": {
|
|
|
104 |
response_completion = response_data['data']['choices'][0]['message']['content'].strip()
|
105 |
return response_completion
|
106 |
|
107 |
+
def chat_with_groq(self, model_name, system_prompt, messages):
|
108 |
# system_prompt insert to messages 的最前面 {"role": "system", "content": system_prompt}
|
109 |
messages.insert(0, {"role": "system", "content": system_prompt})
|
110 |
+
model_name_dict = {
|
111 |
+
"groq_llama3": "llama3-70b-8192",
|
112 |
+
"groq_mixtral": "mixtral-8x7b-32768"
|
113 |
+
}
|
114 |
+
model = model_name_dict.get(model_name)
|
115 |
+
print("======model======")
|
116 |
+
print(model)
|
117 |
+
|
118 |
request_payload = {
|
119 |
+
"model": model,
|
120 |
"messages": messages,
|
121 |
"max_tokens": 500 # 設定一個較大的值,可根據需要調整
|
122 |
}
|
|
|
131 |
|
132 |
model_id = "anthropic.claude-3-sonnet-20240229-v1:0"
|
133 |
# model_id = "anthropic.claude-3-haiku-20240307-v1:0"
|
134 |
+
print("======model_id======")
|
135 |
+
print(model_id)
|
136 |
kwargs = {
|
137 |
"modelId": model_id,
|
138 |
"contentType": "application/json",
|
|
|
144 |
"messages": messages
|
145 |
})
|
146 |
}
|
|
|
147 |
# 建立 message API,讀取回應
|
148 |
bedrock_client = self.ai_client
|
149 |
response = bedrock_client.invoke_model(**kwargs)
|