Upload formats.py with huggingface_hub
Browse files- formats.py +37 -6
formats.py
CHANGED
@@ -18,19 +18,49 @@ class ICLFormat(SizeLimitingFormat):
|
|
18 |
input_output_separator: str = "\n"
|
19 |
demo_separator: str = "\n\n"
|
20 |
suffix: str = ""
|
|
|
|
|
21 |
|
22 |
def single_source_str(self, source):
|
23 |
-
return
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
-
def
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
-
|
|
|
|
|
|
|
29 |
|
|
|
30 |
if "instruction" in instance:
|
31 |
instruction = instance.pop("instruction")
|
|
|
|
|
|
|
|
|
|
|
32 |
source += self.instruction_prefix + instruction + self.demo_separator
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
for demo_instance in demos_instances:
|
35 |
demo_str = (
|
36 |
self.single_source_str(demo_instance["source"])
|
@@ -40,12 +70,13 @@ class ICLFormat(SizeLimitingFormat):
|
|
40 |
)
|
41 |
|
42 |
if self.size_limiter is not None:
|
43 |
-
if not self.size_limiter.check(
|
|
|
|
|
44 |
continue
|
45 |
|
46 |
source += demo_str
|
47 |
|
48 |
source += query_str
|
49 |
source += self.suffix
|
50 |
-
|
51 |
return source
|
|
|
18 |
input_output_separator: str = "\n"
|
19 |
demo_separator: str = "\n\n"
|
20 |
suffix: str = ""
|
21 |
+
add_instruction_at_start: bool = True
|
22 |
+
add_instruction_after_demos: bool = False
|
23 |
|
24 |
def single_source_str(self, source):
|
25 |
+
return (
|
26 |
+
self.input_prefix
|
27 |
+
+ source
|
28 |
+
+ self.input_output_separator
|
29 |
+
+ self.output_prefix
|
30 |
+
)
|
31 |
|
32 |
+
def single_source_str_with_instruction(self, source, instruction):
|
33 |
+
return (
|
34 |
+
self.input_prefix
|
35 |
+
+ instruction
|
36 |
+
+ self.demo_separator
|
37 |
+
+ source
|
38 |
+
+ self.input_output_separator
|
39 |
+
+ self.output_prefix
|
40 |
+
)
|
41 |
|
42 |
+
def format(self, instance, demos_instances=None):
|
43 |
+
if demos_instances is None:
|
44 |
+
demos_instances = []
|
45 |
+
source = self.prefix
|
46 |
|
47 |
+
instruction = ""
|
48 |
if "instruction" in instance:
|
49 |
instruction = instance.pop("instruction")
|
50 |
+
assert (
|
51 |
+
"instruction" != None
|
52 |
+
), f"instruction field can not be none : {instance}"
|
53 |
+
|
54 |
+
if self.add_instruction_at_start and instruction != "":
|
55 |
source += self.instruction_prefix + instruction + self.demo_separator
|
56 |
|
57 |
+
if self.add_instruction_after_demos and instruction != "":
|
58 |
+
query_str = self.single_source_str_with_instruction(
|
59 |
+
instance["source"], instruction
|
60 |
+
)
|
61 |
+
else:
|
62 |
+
query_str = self.single_source_str(instance["source"])
|
63 |
+
|
64 |
for demo_instance in demos_instances:
|
65 |
demo_str = (
|
66 |
self.single_source_str(demo_instance["source"])
|
|
|
70 |
)
|
71 |
|
72 |
if self.size_limiter is not None:
|
73 |
+
if not self.size_limiter.check(
|
74 |
+
source + demo_str + query_str + instance["target"]
|
75 |
+
):
|
76 |
continue
|
77 |
|
78 |
source += demo_str
|
79 |
|
80 |
source += query_str
|
81 |
source += self.suffix
|
|
|
82 |
return source
|