ตัวช่วยสร้างพรอมต์เป็นแพ็คเกจสำหรับการประเมินพรอมต์ที่กำหนดเองโดยใช้วิธีการประเมินผลต่างๆ ช่วยให้คุณสามารถให้พรอมต์ของคุณเองหรือสร้างโดยอัตโนมัติจากนั้นรับผลลัพธ์ในไฟล์ JSON
ในการใช้ตัวช่วยสร้างพรอมต์คุณต้องติดตั้งแพ็คเกจและการพึ่งพาทั้งหมดโดยใช้ PIP
pip install promptwizardอีกทางเลือกหนึ่งโคลนที่เก็บโดยใช้ git clone https://github.com/leniolabs/promptwiz.git
ในการเรียกใช้ตัวช่วยสร้างพรอมต์คุณจะต้องตั้งค่าและระบุคีย์ OpenAI API ของคุณ คุณสามารถสร้างได้ที่ https://platform.openai.com/account/api-keys หลังจากที่คุณได้รับคีย์ API ให้ระบุโดยใช้ตัวแปรสภาพแวดล้อม OpenAI_API_KEY โปรดระวังค่าใช้จ่ายที่เกี่ยวข้องกับการใช้ API เมื่อเรียกใช้ EVALS
ก่อนที่จะใช้ตัวช่วยสร้างพรอมต์คุณจะต้องกำหนดตัวแปรสภาพแวดล้อมของคุณ คุณมีสองตัวเลือกที่ถูกต้องให้ OPENAI_API_KEY ของคุณกำหนดไว้ใน .env ในโฟลเดอร์ที่ OPENAI_API_KEY ต้องหรือถ้าคุณตัดสินใจใช้ azure คุณต้องกำหนด OPENAI_API_TYPE ของคุณเป็น azure และ OPENAI_API_BASE และ OPENAI_API_VERSION ของ .env
คุณมีทางเลือกการใช้งานสองทาง
หากคุณต้องการใช้ไฟล์ YAML:
ตรวจสอบให้แน่ใจว่าคุณมีไฟล์ YAML พร้อมพรอมต์ที่คุณต้องการประเมิน ไฟล์ YAML ควรเป็นไปตามโครงสร้างที่เหมาะสม
promptwizard YAML_FILE_PATHpromptwizard YAML_FILE_PATH --env_path .env_FILE_PATHตอบกลับ 'Y' เมื่อถูกถามว่าคุณต้องการดำเนินการต่อหรือไม่
output.json ในโฟลเดอร์เดียวกันกับไฟล์ YAML หากคุณเลือกวิธี ELO สำหรับการประเมินผลที่รวดเร็วพล็อตกระจาย scatter_plot.png จะถูกบันทึกไว้ในโฟลเดอร์เดียวกับไฟล์ YAML จะมีการสร้างไฟล์จำนวนมากขึ้นหากคุณได้ระบุไว้ในไฟล์ YAML ของคุณที่คุณต้องการทำการทำซ้ำหากตัวแปร "พรอมต์" ไม่ได้กำหนดไว้ในไฟล์ YAML โปรแกรมจะสร้างพรอมต์โดยอัตโนมัติสำหรับการประเมินผล
เรียกใช้แพ็คเกจที่ผ่านไฟล์ YAML ของคุณเป็นพารามิเตอร์:
promptwizard YAML_FILE_PATHตอบกลับ 'Y' เมื่อถูกถามว่าคุณต้องการดำเนินการต่อหรือไม่
output.json ในโฟลเดอร์เดียวกันกับโฟลเดอร์ YAML หากคุณเลือกวิธี ELO สำหรับการประเมินผลที่รวดเร็วพล็อตกระจาย scatter_plot.png จะถูกบันทึกไว้ในโฟลเดอร์เดียวกับไฟล์ YAMLนอกจากนี้คุณยังสามารถใช้ในสคริปต์ Python ของคุณ:
import promptwizardและใช้ฟังก์ชั่นต่าง ๆ ที่ ProftsWizard สามารถให้คุณได้เช่น: ตัวอย่างเช่น:
# Example of using PromptWizard
from promptwizard import prompt_generation
test_cases = [
{ ' input ' : ' How do you make a classic spaghetti carbonara? ' , ' output ' : ' REPLY ' },
{ ' input ' : " What is John Smith's phone number? " , ' output ' : ' NOT_REPLY ' },
]
description = " Decide whether the question should be answered or not. " # A short description of the type of task for the test cases.
system_gen_prompt = " " " Your job is to generate system prompts for GPT, given a description of the use-case and some test cases.
In your generated prompt, you should describe how the AI should behave in plain English. Include what it will see, and what it's allowed to output. Be creative with prompts to get the best possible results. The AI knows it's an AI -- you don't need to tell it this.
Remember that the prompt should only allow the AI to answer the answer and nothing else. No explanation is necessary.
You will be graded based on the performance of your prompt... but don't cheat! You cannot include specifics about the test cases in your prompt. Any prompts with examples will be disqualified. I repeat, do not include the test cases.
Most importantly, output NOTHING but the prompt. Do not include anything else in your message. " " " # Here you have to indicate to the LLM how your generated prompts should be. This example is useful if you later want to use the equals evaluation method.
# Create 4 prompts.
prompts = prompt_generation.generate_candidate_prompts(system_gen_prompt, test_cases, description)[0]
หากคุณต้องการคุณสามารถระบุจำนวนการวนซ้ำที่คุณต้องการดำเนินการตามพรอมต์ที่ให้ไว้หรือสิ่งที่จะถูกสร้างขึ้นโดยอัตโนมัติเพื่อรับพรอมต์ที่บรรลุพฤติกรรมที่ดีที่สุดสำหรับแบบจำลองภาษา ในทางกลับกันการใช้ฟังก์ชั่นเพื่อทำซ้ำพรอมต์สำหรับสคริปต์ Python ของคุณนั้นมีอยู่:
from promptwizard.prompt_generation import iteration
results = iteration.iterations(test_cases, method= ' Elo ' , prompts=old_prompts, number_of_prompts=3)เราให้คำอธิบายเกี่ยวกับโครงสร้างที่ถูกต้องของไฟล์ YAML ของคุณและข้อ จำกัด บางประการสำหรับตัวแปรบางอย่างภายใน เราขอแนะนำให้คุณอ่านอย่างละเอียดก่อนที่จะทำการประเมินผล
ต่อไปนี้เป็นโครงสร้างที่ไฟล์ YAML ของคุณควรมี
test:
cases: " " " Here, you have to put the test cases you are going to use to evaluate your prompts. If you are going to use the
Elo method to evaluate them, it should be just a list of strings. If you are going to use the methods classification,
equal or includes, it should be a list of tuples with two elements, where the first element is the test case and the
second element is the correct response to the test. Remember that if you decide to use classification, only a boolean
value is allowed as a response. the form of your test cases has to be, in case of selecting the Elo method:
-'Test1'
-'Test2'...
If you choose the methods Classification, Equals, Includes, Semantic Similarity or LogProbs they must be of the form:
-input: 'Test1'
output: 'Answer1'
-input: 'Test2'
output: 'Answer2'
In case the method is Function Calling:
-input: 'Test1'
output1: 'name_function'
output2: 'variable'
-input: 'Test2'
output1: 'name_function'
output2: 'variable'
If you choose Code Generation:
- input: 'Test1'
arguments: (arg1,) in case there is only one argument, (arg1, arg2,...) in case there are more than one argument.
output: res
and finally if you choose JSON Validation:
- input: 'Test1'
output: json_output " " "
description: " " " Here is the description of the type of task that summarizes the test cases. You only have to use this field if
you are going to use the 'Elo' method " " "
method: " " " Here, you select the evaluation method for your prompts. You must choose between 'Elo',
'Classification', 'Equals', 'Includes', 'Function Calling', 'Code Generation' 'JSON Validation', 'Semantic Similarity' and 'LogProbs'. " " "
model:
name: " " " The name of the GPT model you will use to evaluate the prompts. " " "
temperature: " " " The temperature of the GPT model you will use to evaluate the prompts. " " "
max_tokens: " " " The maximum number of tokens you will allow the GPT model to use to generate the response to the test. " " "
functions: " " " This field must only be filled out in case the 'Function Calling' method is intended to be used.
If another method is used, it must not be filled out. The structure is a JSON object. Let's break down the different components:
- Function Name (name): This is the identifier used to refer to this function within the context of your code.
- Function Description (description): A brief description of what the function does.
- Function Parameters (parameters): This section defines the input parameters that the function accepts.
- Type (type): The type of the parameter being defined.
- Properties (properties): This is an object containing properties that the input parameter object should have.
- File Type (file_type): This is a property of the parameter object.
- Enum (enum): An enumeration of allowed values for the 'file_type' property. (optional)
- Description (description): A description of what the 'file_type' property represents.
- Required (required): An array listing the properties that are required within the parameter object. (optional) " " "
function_call: " " " This field must only be filled out in case the 'Function Calling' method is intended to be
used. If another method is used, it must not be filled out. " " "
prompts: " " " You have two options, either provide your list of prompts or generate them following the instructions below. " " "
list: " " " A list of prompts you want to evaluate. If you want to generate them with the prompt generator, don't use this field.
Please provide a minimum number of 4 prompts. Your prompts must be listed as follows:
- 'Prompt1'
- 'Prompt2'... " " "
generation:
number: " " " The number of prompts you are going to evaluate. You need to provide this key value only if you are going to generate the prompts. Indicate the quantity of prompts you want to generate. Please provide a minimum number of 4 prompts. If you do not define this key by default, 4 prompts will be created. " " "
constraints: " " " If you are going to generate prompts, this optional feature allows you to add special characteristics to the prompts that will be generated. For example, if you want prompts with a maximum length of 50 characters, simply complete with 'Generate prompts with a maximum length of 50 characters'. If you don't want to use it, you don't need to have this key defined. " " "
description: " " " Here is the description of the type of task that summarizes the test cases. If you use the 'Elo' method you mustn't use this field. " " "
best_prompts: " " " The number of prompts you want to iterate over and on which you want to highlight the final results. the value must be between 2 and the number of prompts you provide (or generate) minus one. If you do not define this value the default value will be 2. " " "
model:
name: " " " The name of the GPT model you will use to generate the prompts. " " "
temperature: " " " The temperature of the GPT model you will use to generate the prompts. " " "
max_tokens: " " " The maximum number of tokens you will allow the GPT model to use to generate your prompts. " " "
iterations:
number: " " " The number of iterations you want to perform on the best prompts obtained in your initial testing to arrive at
prompts with better final results. If you don't want to try alternatives combining your best prompts just put 0. " " "
best_percentage: " " " Number between 0 and 100 indicating that iterations should be stopped if all 'best_prompts' equaled or exceeded the indicated accuracy. If this value is not defined, it will default to 100. " " "
model:
name: " " " The name of the GPT model you will use to generate the prompts. " " "
temperature: " " " The temperature of the GPT model you will use to generate the prompts. " " "
max_tokens: " " " The maximum number of tokens you will allow the GPT model to use to generate your prompts. " " "
You can not define these variables for ' model ' in case you want to keep the same variables that were used in ' generation ' , in case the ' generation ' field has not been used it will take the following default values:
name: ' gpt-4
temperature: 0.6
max_tokens: 300"""
timeout: """Timeout set for an API request. This time limit indicates how long the client should wait to receive a response before the request expires."""
n_retries: """Number of attempts that will be automatically made to resend an API request in case the initial request fails."""ในกรณีที่ไฟล์ YAML ที่คุณต้องการประเมินมีข้อผิดพลาดในโครงสร้างของมันไม่ต้องกังวล ก่อนที่จะได้รับการประเมินโดยวิศวกรที่รวดเร็วไฟล์ของคุณจะได้รับการตรวจสอบและคุณจะได้รับการแจ้งเตือนที่ระบุว่าคุณต้องทำการแก้ไขเพื่อประเมินผลที่ใด
โปรดจำไว้ว่าเมื่อคุณสร้างพรอมต์ของคุณคุณสามารถใช้คีย์ constraints เพื่อขออย่างชัดเจนว่าพรอมต์ที่คุณจะสร้างมีลักษณะพิเศษเช่น 'สร้างพรอมต์ที่มีความยาวไม่เกิน 20 คำ'
หากคุณต้องการทราบว่าค่าใช้จ่ายในการดำเนินการประเมินของคุณมีค่าใช้จ่ายเท่าใดเพียงแค่ป้อน:
promptwizard YAML_FILE_PATHและเพียงแค่ตอบ 'n' เมื่อถูกถามว่าคุณต้องการดำเนินการต่อหรือไม่
มิฉะนั้นตอบสนอง 'Y' และดำเนินการประเมินผลของคุณและคุณจะได้รับค่าใช้จ่ายโดยประมาณพร้อมกับค่าใช้จ่ายสุดท้ายที่แท้จริงในตอนท้าย ในไฟล์ JSON สุดท้ายนอกเหนือจากการเห็นคำแนะนำด้านบนด้วยผลลัพธ์ที่ดีที่สุดคุณจะมีข้อมูลเดียวกันนี้เกี่ยวกับค่าใช้จ่ายและจำนวนโทเค็นที่ใช้อย่างมีประสิทธิภาพสำหรับทั้ง GPT-3.5-turbo และ GPT-4
หรือคุณสามารถทำสิ่งต่อไปนี้ในสคริปต์ Python ของคุณ:
from promptwizard.approximate_cost import cost
print(cost.approximate_cost(test_cases, method, prompts_value))และคุณจะเห็นค่าใช้จ่ายโดยประมาณสำหรับการประเมินที่เป็นไปได้ของคุณ
หากคุณต้องการดูตัวอย่างการใช้งานเราได้จัดทำสมุดบันทึก colab ต่อไปนี้เพื่อให้คุณสำรวจวิธีต่าง ๆ ที่คุณสามารถใช้ Prottwizard ได้ (https://colab.research.google.com/drive/1iw2Y43923VECOHKPUHOGENWY1Y81RW8I?USP=sharing)
Promptwizard ถูกสร้างขึ้นด้วยความรักโดย Leniolabs และชุมชนที่กำลังเติบโตของผู้มีส่วนร่วม เราสร้างประสบการณ์ดิจิทัลด้วยความคิดของคุณ ติดต่อกลับ! นอกจากนี้หากคุณมีคำถามหรือข้อเสนอแนะใด ๆ เกี่ยวกับ Prottwizard โปรดติดต่อเราที่ [email protected] เราชอบที่จะได้ยินจากคุณ!