Inżynieria promptów w tworzeniu chatbotów

Prompt Engineering z OpenAI API

Fouad Trad

Machine Learning Engineer

Po co inżynieria promptów w chatbotach?

  • Trudno przewidzieć pytania użytkowników
  • Trudno zagwarantować trafne odpowiedzi
  • Inżynieria promptów steruje zachowaniem chatbota

Image showing a chatbot on a mobile phone.

Prompt Engineering z OpenAI API

Inżynieria promptów z OpenAI API

Image showing the three roles of a message and the communication between them.

  • Każda wiadomość ma przypisaną rolę
Prompt Engineering z OpenAI API

Inżynieria promptów z OpenAI API

Image showing the three roles of a message and the communication between them, with a highlight around the interaction between the user and the assistant.

  • Każda wiadomość ma przypisaną rolę
  • Do tej pory skupialiśmy się na promptach użytkownika
Prompt Engineering z OpenAI API

Inżynieria promptów z OpenAI API

Image showing the three roles of a message and the communication between them, with a highlight around the interaction between the system and the assistant.

  • Każda wiadomość ma przypisaną rolę
  • Do tej pory skupialiśmy się na promptach użytkownika
  • Prompty systemowe sterują zachowaniem chatbota
Prompt Engineering z OpenAI API

Endpoint chat completions w tworzeniu chatbotów

  • Wysyła do modelu listę wiadomości
response = client.chat.completions.create(
  model="gpt-4o-mini",
  messages=[{"role": "system",
             "content": "You are an expert data scientist that explains complex concepts in simple terms"},

{"role": "user", "content": "What is prompt engineering?"}] )
print(response.choices[0].message.content)
Imagine you're giving instructions to a computer program, like teaching a robot to make a sandwich. 
Prompt engineering is all about crafting those instructions, or "prompts," in a way that helps the 
computer understand and perform the task better.
Prompt Engineering z OpenAI API

Dostosowanie `get_response()` do chatbota

  • Wysyłanie jednego promptu
def get_response(prompt):
    messages = [
      {"role": "user", "content": prompt}
    ]
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=messages,
        temperature=0,
    )
    return response.choices[0].message.content

prompt = "<PROMPT>" print(get_response(prompt))
  • Wysyłanie dwóch promptów
def get_response(system_prompt, user_prompt):

messages = [ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt}]
response = client.chat.completions.create( model="gpt-4o-mini", messages=messages, temperature=0, ) return response.choices[0].message.content
system_prompt = "<SYSTEM_PROMPT>" user_prompt = "<USER_PROMPT>" print(get_response(system_prompt, user_prompt))
Prompt Engineering z OpenAI API

Komunikat systemowy: definiowanie celu

system_prompt = "You are a chatbot that answers financial questions."

user_prompt = "Who are you?" print(get_response(system_prompt, user_prompt))
I'm a financial chatbot that answers financial questions. How can I help you?
  • Chatbot udziela odpowiedzi zgodnych z dziedziną
  • Brak zdefiniowanego celu może skutkować odpowiedziami nie na temat
Prompt Engineering z OpenAI API

Komunikat systemowy: wytyczne odpowiedzi

  • Określ odbiorcę, ton, długość i strukturę
system_prompt = """You are a chatbot that answers financial questions. 
Your answers should be precise, formal and objective"""

user_prompt = "What do you think about cryptocurrencies?" print(get_response(system_prompt, user_prompt))
Prompt Engineering z OpenAI API

Komunikat systemowy: wytyczne odpowiedzi

Cryptocurrencies are digital or virtual currencies that use cryptography for security and operate on 
decentralized networks based on blockchain technology. 
[...]

Advantages of cryptocurrencies include: - Decentralization: [...] - Security:[...] - Global Accessibility: [...]
However, there are also notable concerns: - Volatility: [...] - Regulatory Uncertainty: [...] - Lack of Consumer Protection: [...]
In summary, cryptocurrencies have the potential to offer various benefits, but their adoption and impact on the financial landscape are still evolving [...]
Prompt Engineering z OpenAI API

Komunikat systemowy: sterowanie zachowaniem

  • Warunkowe prompty sterujące odpowiedziami
system_prompt = """You are a chatbot that answers financial questions. 
Your answers should be precise, formal and objective.


"""
Prompt Engineering z OpenAI API

Komunikat systemowy: sterowanie zachowaniem

  • Warunkowe prompty sterujące odpowiedziami
system_prompt = """You are a chatbot that answers financial questions. 
Your answers should be precise, formal and objective.
If the question you receive is within the financial field, answer it to the best of your knowledge.

"""
Prompt Engineering z OpenAI API

Komunikat systemowy: sterowanie zachowaniem

  • Warunkowe prompty sterujące odpowiedziami
system_prompt = """You are a chatbot that answers financial questions. 
Your answers should be precise, formal and objective.
If the question you receive is within the financial field, answer it to the best of your knowledge.
Otherwise, answer with 'Sorry, I only know about finance.'
"""
user_prompt = "How's the weather today?"

print(get_response(system_prompt, user_prompt))
Sorry, I only know about finance.
Prompt Engineering z OpenAI API

Czas na praktykę!

Prompt Engineering z OpenAI API

Preparing Video For Download...