-
Notifications
You must be signed in to change notification settings - Fork 0
/
examples.py
150 lines (119 loc) · 3.85 KB
/
examples.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import json
from gptrun import chatgptrun
from functools import lru_cache
from gptrun.data import InvokationExample
@chatgptrun
def is_irony(text):
"""
Returns True if text contains irony, False otherwise.
>>> is_irony("I went to the movies last Friday; it was alright.")
False
>>> is_irony("He was one of the most supremely stupid men I have ever met. He taught me a great deal.")
True
>>> is_irony("Martha is at home right now.")
False
>>> is_irony("I didn't have time to write a short letter, so I wrote a long one instead.")
True
>>> is_irony("Silence is golden. Duct tape is silver.")
True
>>> is_irony("Since the 1930s, this company has worked alongside communities and clients of all sizes.")
False
"""
pass
@chatgptrun
def capital(country):
"""
Return the capital of a country.
>>> capital("Angola")
"Luanda"
>>> capital("France")
"Paris"
>>> capital("Spain")
"Madrid"
"""
pass
@chatgptrun
def spanish_rhyme(word):
"""
Return a rhyme given a word (in Spanish).
>>> spanish_rhyme('cansado') # doctest: +SKIP
'preparado'
>>> spanish_rhyme('camión') # doctest: +SKIP
'melón'
>>> spanish_rhyme('adelantó') # doctest: +SKIP
'suplantó'
"""
pass
@chatgptrun(on_invalid_response=lambda:None) # If you don't want to raise an exception if GPT3 returns nonsense
def sentiment(text):
"""
Return the general sentiment of the phrase as 'positive', 'neutral' or 'negative'.
>>> sentiment("I hate Mondays")
"negative"
>>> sentiment("I love my car")
"positive"
>>> sentiment("The sky is blue and so is the sea")
"neutral"
>>> sentiment("The sun is a star. There are lots of stars in the universe.")
"neutral"
"""
pass
@chatgptrun # Use '# doctest: +SKIP' on non-exact samples to avoid failing tests
def color(description):
"""
Return the lowercase CSS color code by its description.
>>> color("black")
"#000000"
>>> color("white")
"#ffffff"
>>> color("deep blue ocean") # doctest: +SKIP
"#003c5f"
>>> color("the color of the sky") # doctest: +SKIP
"#87ceeb"
"""
pass
weight_examples = [
InvokationExample.from_call("weight", "Megan Fox", _return=53),
InvokationExample.from_call("weight", "Anne Hathaway", _return=59),
InvokationExample.from_call("weight", "Amy Adams", _return=52),
InvokationExample.from_call("weight", "George Washington", _return=87),
InvokationExample.from_call("weight", "Harrison Ford", _return=83),
]
@chatgptrun(api_model="gpt-4")
def weight(text):
"""
Return the approximate weight of a well known person or character in kilograms.
If the weight is unknown return an approximation based on the height and gender.
"""
pass
@chatgptrun(external_example_file="./motto.examples", num_examples=3)
def motto(character):
"""
Returns an appropriate motto for the user.
"""
pass
if __name__ == '__main__':
#
# You can test your functions like so...
#
print("TESTING 'color':")
try:
color.test_task_generalization()
except Exception as e:
print(e)
#
# You can use the functions as normal python functions:
#
wilson_fisk = weight("Wilson Fisk", _examples=weight_examples)
mahatma_gandhi = weight("Mahatma Gandhi", _examples=weight_examples)
if wilson_fisk > mahatma_gandhi:
print(f"No surprises here: {wilson_fisk=}, {mahatma_gandhi=}")
print(f'{capital("Australia")=}')
print(f'{color("sun")=}')
print(f'{spanish_rhyme("sillón")=}')
print(f'{motto("nilp0inter")=}')
# You can check the token for a given call
print(f'{capital.calculate_tokens_per_call("France")=}')
# You can also see the call details
result = capital.call_with_details("Tunisia")
print(json.dumps(result, indent=2))