ch03 的 Colab 範例最後一個儲存格執行時會看到以下的錯誤訊息: ``` ChatGoogleGenerativeAIError: Invalid argument provided to Gemini: 400 Developer instruction is not enabled for models/gemini-pro ``` 這是因為範例中的模板使用了 `system` 角色的訊息, 但 Google 的 gemini 模型並不支援 `system` 角色。為了解決這個問題, 建立 `ChatGoogleGenerativeAI` 物件時提供有參數 `convert_system_message_to_human`, 只要傳入 `True` 就可以自動將 `system` 角色的訊息轉換成 `Human` 角色訊息: ```python from langchain_core.runnables import ConfigurableField llm = chat_model.configurable_alternatives( ConfigurableField( id="llm", name="LLM", description="多種語言模型"), # 預設模型 gpt-3.5-turbo default_key="openai", # 新增模型 gpt-4-turbo gpt4=ChatOpenAI(model="gpt-4-turbo"), # 新增模型 gemini-pro gemini = ChatGoogleGenerativeAI( model="gemini-pro", temperature=0.7, convert_system_message_to_human=True) ) ``` 修改後就可以正常執行如下: ``` /usr/local/lib/python3.10/dist-packages/langchain_google_genai/chat_models.py:344: UserWarning: Convert_system_message_to_human will be deprecated! warnings.warn("Convert_system_message_to_human will be deprecated!") 兔子 ``` 不過你可能已經發現除了回覆內容以外, 還會出現警告, 表示未來會棄用 `convert_system_message_to_human` 這個參數。若要讓這個警告不出現, 就要避免使用 `system` 角色的訊息, 也不能使用 `convert_system_message_to_human` 參數。你可以自己手動將 `system`訊息都改放在 `human` 訊息內的最前面, 像是把建立模板的儲存格改成以下這樣, 最後一格儲存格就能順利執行: ```python prompt = PromptTemplate.from_template( "告訴我一個{topic}相關知識").configurable_alternatives( ConfigurableField( id="prompt", name="提示模板", description="多種提示"), # 預設模板 default_key="knowledge", # 新增提示模板 discuss=PromptTemplate.from_template( "根據顏色{color}列出可能的水果"), # 新增對話提示模板 chat=ChatPromptTemplate.from_messages( [ # ("system","你是一個動物專家"), ("human", "你是一個動物專家, 相關特徵有{topic}, 請猜出是十二生肖的哪一個動物") ]), ) ``` 就可以正常運作了。