Bei dieser Artikelserie handelt es sich eigentlich um die Notizen eines kostenlosen Kurses[Building Systems with the chatgpt API]den Andrew Ng mit OpenAI zusammengearbeitet hat. Es wird dringend empfohlen, dass Sie sich das Original-Kursvideo direkt ansehen, der Inhalt ist recht einfach und leicht zu verstehen.

In unseren zweiten Studiennotizen stellen wir die Schlussfolgerung der Denkkette vor.

Die sogenannte Gedankenkette besteht in einfachen Worten darin, das Problem in kleinere Schritte zu zerlegen, um LLM bei der Lösung der von uns benötigten Informationen anzuleiten. Um es klarer zu erklären, werden wir es Ihnen direkt anhand von Beispielen erklären.

Tipps zur Nachrichtenverarbeitung

Wir werden es als Kundendienstassistent in einem 3C-Geschäft demonstrieren. Die folgenden Eingabeaufforderungen werden die Denkkette nutzen, um zu leiten, wie das Sprachmodell Produktvergleichsfragen ableitet:

delimiter = "####" 
system_message = f""" 
按照以下步驟回答客戶的問題。 客戶的查詢將以四個井字號作為分隔符號,\
也就是 {delimiter}。   

步驟1:{delimiter} 首先判斷用戶是否在問關於特定產品或多種產品的問題。 \
不考慮產品類別。  
步驟2:{delimiter} 如果用戶在問關於特定產品的問題, \
辨認該產品是否在以下列表中。  

所有產品: 
1. 產品:TechPro Ultrabook 
類別:電腦與筆記型電腦 
品牌:TechPro 
型號:TP-UB100 
保固:1年 
評價:4.5 
特性:13.3吋顯示器,8GB 記憶體,256GB SSD,Intel Core i5處理器 
描述:一款適合日常使用的輕便筆記型電腦。 
價格:$799.99  

2. 產品:BlueWave 電競筆電 
類別:電腦與筆記型電腦 
品牌:BlueWave 
型號:BW-GL200 
保固:2年 
評價:4.7 
特性:15.6吋顯示器,16GB RAM,512GB SSD硬碟,NVIDIA GeForce RTX 3060顯示卡 
描述:一款性能強勁的電競筆記型電腦,讓您沉浸其中。 
價格:$1199.99  

...  中間省略 ...

步驟3:{delimiter} 如果訊息中包含上述列表中的產品, \
列出使用者訊息中可能的假設,例如筆記本X比筆記本Y大,或者筆記本Z有2年保固。  

步驟4:{delimiter} 如果用戶有任何假設, \
根據您的產品資訊判斷該假設是否正確。  

步驟5:{delimiter} 首先,如果適用,請禮貌地糾正客戶的錯誤假設。 \
只提及或參考上述五種產品資訊,因為這些是商店售賣的唯一五種產品。 \
以友善的語氣回答客戶。

使用以下格式: 
步驟1:{delimiter}  
步驟2:{delimiter}  
步驟3:{delimiter}  
步驟4:{delimiter}  
回覆給使用者:{delimiter}   

確保每一步都包含 {delimiter} 來進行分隔。 
"""

Aus dem Eingabeaufforderungsbeispiel oben können wir mehrere wichtige Punkte erkennen:

  • Wir listen die Schritte zur Anleitung von LLM direkt auf, geben den Verarbeitungsschwerpunkt jedes Schritts an und bitten LLM schließlich, das Problem Schritt für Schritt gemäß den Schritten zu lösen.
  • Verwendung von Trennzeichen. Unabhängig davon, ob es sich um die Nachricht des Benutzers oder die Ausgabe jedes Schritts von LLM handelt, verwenden wir Trennzeichen, um sie zu trennen. Die Benutzerinformationen, die wir LLM zur Verfügung stellen, verwenden Trennzeichen, um LLM die Grenzen von Benutzernachrichten klarer zu machen, und erfordern, dass LLM bei der Ausgabe Trennzeichen verwendet, damit wir die gewünschten Antwortnachrichten später einfach ausschneiden können. Dieser Teil ist in Ich werde vorstellen es dir später.
  • Schließlich können wir auch die spitzen Klammern nach jedem Schritt beobachten, die im Wesentlichen einen Raum bieten, den das Sprachmodell ausfüllen kann.
Siehe auch  „ChatGPT schreibt besser als ich“

Benutzernachrichtentest 1

Wie wird das Sprachmodell anhand der obigen Hinweise mit dem Problem des clientseitigen Produktvergleichs umgehen? Kommen wir gleich zum Testbeispiel:

user_message = f"""
你們的 BlueWave Chromebook 比 TechPro 桌機貴多少?
"""

Nachrichten =  [
{'role':'system',
 'content': system_message},
{'role':'user',
 'content': f"{delimiter}{user_message}{delimiter}"},
]

response = get_completion_from_messages(messages)
print(response)

--- 以下是 LLM 的回覆 ---

步驟1:#### 用戶在問關於特定產品的問題,不考慮產品類別。 
步驟2:#### 該產品 BlueWave Chromebook 在產品列表中,價格為 $249.99。
TechPro 桌機也在產品列表中,價格為 $999.99。 
步驟3:#### 用戶沒有提供任何假設。 
步驟4:#### 無需判斷假設是否正確。 
回覆給使用者:#### BlueWave Chromebook 的價格是 $249.99,
而 TechPro 桌機的價格是 $999.99。
因此,BlueWave Chromebook 比 TechPro 桌機便宜了 $750。

Schauen wir uns zusätzlich ein Gegenbeispiel an: Wie wird er reagieren, wenn das Produkt, nach dem der Kunde fragt, nicht in unserer Produktliste enthalten ist?

Benutzernachrichtentest 2

user_message = f"""
你們有賣電視嗎?
""" 
Nachrichten =  [
{'role':'system',
 'content': system_message},
{'role':'user',
 'content': f"{delimiter}{user_message}{delimiter}"},
]
response = get_completion_from_messages(messages)
print(response)

--- 以下是 LLM 的回覆 ---

步驟1:#### 客戶詢問關於特定產品或多種產品的問題。不考慮產品類別。
步驟2:#### 由於客戶沒有詢問特定產品,因此我們無法回答關於產品的問題。
請問您需要關於哪種類型的產品的資訊? 例如,電腦、手機、家電等等。
回覆給客戶:#### 請問您需要關於哪種類型的產品的資訊?
例如,電腦、手機、家電等等。

Wenn man das sieht, sollte jeder ein besseres Gefühl dafür haben, was die Denkkette ist und welche Kraft die Denkkette hat! ?

Lassen Sie uns abschließend besprechen, wie die endgültige Nachricht, die an den Benutzer zurückgesendet werden soll, aus dem Denkprozess der Denkkette extrahiert werden kann.

Extraktion von Antwortnachrichten

Wie bereits erwähnt, besteht der Hauptzweck der bei der Auflistung der Schritte verwendeten Trennzeichen darin, uns das Extrahieren der Antwortnachricht zu erleichtern. Hier ist eine einfache Version der Extraktionsfunktion und des extrahierten Inhalts:

try:
    # 使用分隔符號來切割訊息,並且取出真的要回覆的內容
    final_response = response.split(delimiter)[-1].strip()
except Exception as e:
    # 發現無法處理的訊息時的回覆訊息
    final_response = """很抱歉,我無法處理你這個問題,
        請您試著詢問其他問題。"""
      
print(final_response)

--- 提取後的回覆訊息 ---
BlueWave Chromebook 的價格是 $249.99,而 TechPro 桌機的價格是 $999.99。
因此,BlueWave Chromebook 比 TechPro 桌機便宜了 $750。

Eine der Demonstrationen der oben genannten Denkkette in der praktischen Anwendung.

Siehe auch  ChatGPT übertrifft erfahrene Chirurgen bei der Beantwortung von Fragen von Rhinoplastik-Patienten
Anzeige

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein