Spaces:
Runtime error
Runtime error
Upload folder using huggingface_hub
Browse files- .pytest_cache/.gitignore +2 -0
- .pytest_cache/CACHEDIR.TAG +4 -0
- .pytest_cache/README.md +8 -0
- .pytest_cache/v/cache/lastfailed +35 -0
- .pytest_cache/v/cache/nodeids +47 -0
- .pytest_cache/v/cache/stepwise +1 -0
- README.md +1 -1
- __pycache__/chatgpt4uavs.cpython-311.pyc +0 -0
- __pycache__/fewshot.cpython-311.pyc +0 -0
- __pycache__/maps.cpython-311.pyc +0 -0
- __pycache__/prompts.cpython-311.pyc +0 -0
- commands.txt +0 -1
- fewshot.py +1 -1
- prompts.py +61 -59
- requirements.txt +306 -0
- test/.pytest_cache/v/cache/lastfailed +2 -20
- test/.pytest_cache/v/cache/nodeids +1 -53
- test/__pycache__/test_chatgpt4uavs.cpython-311-pytest-7.4.0.pyc +0 -0
- test/__pycache__/test_fewshot.cpython-311-pytest-7.4.0.pyc +0 -0
- test/test_fewshot.py +58 -50
- uav_api.py +55 -0
.pytest_cache/.gitignore
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
# Created by pytest automatically.
|
2 |
+
*
|
.pytest_cache/CACHEDIR.TAG
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Signature: 8a477f597d28d172789f06886806bc55
|
2 |
+
# This file is a cache directory tag created by pytest.
|
3 |
+
# For information about cache directory tags, see:
|
4 |
+
# https://bford.info/cachedir/spec.html
|
.pytest_cache/README.md
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# pytest cache directory #
|
2 |
+
|
3 |
+
This directory contains data from the pytest's cache plugin,
|
4 |
+
which provides the `--lf` and `--ff` options, as well as the `cache` fixture.
|
5 |
+
|
6 |
+
**Do not** commit this to version control.
|
7 |
+
|
8 |
+
See [the docs](https://docs.pytest.org/en/stable/how-to/cache.html) for more information.
|
.pytest_cache/v/cache/lastfailed
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"test/test_chatgpt4uavs.py::test_red_house": true,
|
3 |
+
"test/test_chatgpt4uavs.py::test_take_off": true,
|
4 |
+
"test/test_chatgpt4uavs.py::test_land": true,
|
5 |
+
"test/test_chatgpt4uavs.py::test_picture": true,
|
6 |
+
"test/test_chatgpt4uavs.py::test_snap_pic": true,
|
7 |
+
"test/test_chatgpt4uavs.py::test_purple_house": true,
|
8 |
+
"test/test_chatgpt4uavs.py::test_parking_garage": true,
|
9 |
+
"test/test_chatgpt4uavs.py::test_gym": true,
|
10 |
+
"test/test_chatgpt4uavs.py::test_cease_flight": true,
|
11 |
+
"test/test_chatgpt4uavs.py::test_stop_flight": true,
|
12 |
+
"test/test_chatgpt4uavs.py::test_lift_off": true,
|
13 |
+
"test/test_chatgpt4uavs.py::test_no_location1": true,
|
14 |
+
"test/test_chatgpt4uavs.py::test_no_location2": true,
|
15 |
+
"test/test_chatgpt4uavs.py::test_no_location3": true,
|
16 |
+
"test/test_fewshot.py::test_multiple_actions": true,
|
17 |
+
"test/test_fewshot.py::test_multiple_actions_and_locations": true,
|
18 |
+
"test/test_fewshot.py::test_action_and_location": true,
|
19 |
+
"test/test_fewshot.py::test_action_and_location_synonyms": true,
|
20 |
+
"test/test_fewshot.py::test_action_synonyms": true,
|
21 |
+
"test/test_fewshot.py::test_action_synonyms2": true,
|
22 |
+
"test/test_fewshot.py::test_action_synonyms3": true,
|
23 |
+
"test/test_fewshot.py::test_red_house": true,
|
24 |
+
"test/test_fewshot.py::test_land": true,
|
25 |
+
"test/test_fewshot.py::test_purple_house": true,
|
26 |
+
"test/test_fewshot.py::test_parking_garage": true,
|
27 |
+
"test/test_fewshot.py::test_gym": true,
|
28 |
+
"test/test_fewshot.py::test_cease_flight": true,
|
29 |
+
"test/test_fewshot.py::test_no_location1": true,
|
30 |
+
"test/test_fewshot.py::test_no_location3": true,
|
31 |
+
"test/test_fewshot.py::test_location_no_action": true,
|
32 |
+
"test/test_fewshot.py::test_location_no_action2": true,
|
33 |
+
"test/test_fewshot.py::test_location_no_action3": true,
|
34 |
+
"test/test_fewshot.py::test_with_extra_words2": true
|
35 |
+
}
|
.pytest_cache/v/cache/nodeids
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
"test/test_chatgpt4uavs.py::test_cease_flight",
|
3 |
+
"test/test_chatgpt4uavs.py::test_gym",
|
4 |
+
"test/test_chatgpt4uavs.py::test_land",
|
5 |
+
"test/test_chatgpt4uavs.py::test_lift_off",
|
6 |
+
"test/test_chatgpt4uavs.py::test_no_location1",
|
7 |
+
"test/test_chatgpt4uavs.py::test_no_location2",
|
8 |
+
"test/test_chatgpt4uavs.py::test_no_location3",
|
9 |
+
"test/test_chatgpt4uavs.py::test_parking_garage",
|
10 |
+
"test/test_chatgpt4uavs.py::test_picture",
|
11 |
+
"test/test_chatgpt4uavs.py::test_purple_house",
|
12 |
+
"test/test_chatgpt4uavs.py::test_red_house",
|
13 |
+
"test/test_chatgpt4uavs.py::test_snap_pic",
|
14 |
+
"test/test_chatgpt4uavs.py::test_stop_flight",
|
15 |
+
"test/test_chatgpt4uavs.py::test_take_off",
|
16 |
+
"test/test_fewshot.py::test_action_and_location",
|
17 |
+
"test/test_fewshot.py::test_action_and_location_synonyms",
|
18 |
+
"test/test_fewshot.py::test_action_synonyms",
|
19 |
+
"test/test_fewshot.py::test_action_synonyms2",
|
20 |
+
"test/test_fewshot.py::test_action_synonyms3",
|
21 |
+
"test/test_fewshot.py::test_cease_flight",
|
22 |
+
"test/test_fewshot.py::test_empty_input",
|
23 |
+
"test/test_fewshot.py::test_gym",
|
24 |
+
"test/test_fewshot.py::test_invalid_command",
|
25 |
+
"test/test_fewshot.py::test_land",
|
26 |
+
"test/test_fewshot.py::test_lift_off",
|
27 |
+
"test/test_fewshot.py::test_location_no_action",
|
28 |
+
"test/test_fewshot.py::test_location_no_action2",
|
29 |
+
"test/test_fewshot.py::test_location_no_action3",
|
30 |
+
"test/test_fewshot.py::test_multiple_actions",
|
31 |
+
"test/test_fewshot.py::test_multiple_actions_and_locations",
|
32 |
+
"test/test_fewshot.py::test_no_location1",
|
33 |
+
"test/test_fewshot.py::test_no_location2",
|
34 |
+
"test/test_fewshot.py::test_no_location3",
|
35 |
+
"test/test_fewshot.py::test_no_location4",
|
36 |
+
"test/test_fewshot.py::test_parking_garage",
|
37 |
+
"test/test_fewshot.py::test_picture",
|
38 |
+
"test/test_fewshot.py::test_purple_house",
|
39 |
+
"test/test_fewshot.py::test_red_house",
|
40 |
+
"test/test_fewshot.py::test_snap_pic",
|
41 |
+
"test/test_fewshot.py::test_stop_flight",
|
42 |
+
"test/test_fewshot.py::test_take_off",
|
43 |
+
"test/test_fewshot.py::test_take_off_synonym",
|
44 |
+
"test/test_fewshot.py::test_two_go_to",
|
45 |
+
"test/test_fewshot.py::test_with_extra_words",
|
46 |
+
"test/test_fewshot.py::test_with_extra_words2"
|
47 |
+
]
|
.pytest_cache/v/cache/stepwise
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
[]
|
README.md
CHANGED
@@ -2,5 +2,5 @@
|
|
2 |
title: conversational_uav_explorer
|
3 |
app_file: app.py
|
4 |
sdk: gradio
|
5 |
-
sdk_version: 3.
|
6 |
---
|
|
|
2 |
title: conversational_uav_explorer
|
3 |
app_file: app.py
|
4 |
sdk: gradio
|
5 |
+
sdk_version: 3.35.2
|
6 |
---
|
__pycache__/chatgpt4uavs.cpython-311.pyc
CHANGED
Binary files a/__pycache__/chatgpt4uavs.cpython-311.pyc and b/__pycache__/chatgpt4uavs.cpython-311.pyc differ
|
|
__pycache__/fewshot.cpython-311.pyc
CHANGED
Binary files a/__pycache__/fewshot.cpython-311.pyc and b/__pycache__/fewshot.cpython-311.pyc differ
|
|
__pycache__/maps.cpython-311.pyc
CHANGED
Binary files a/__pycache__/maps.cpython-311.pyc and b/__pycache__/maps.cpython-311.pyc differ
|
|
__pycache__/prompts.cpython-311.pyc
CHANGED
Binary files a/__pycache__/prompts.cpython-311.pyc and b/__pycache__/prompts.cpython-311.pyc differ
|
|
commands.txt
CHANGED
@@ -1 +0,0 @@
|
|
1 |
-
NONE
|
|
|
|
fewshot.py
CHANGED
@@ -11,7 +11,7 @@ class FewShot4UAVs:
|
|
11 |
|
12 |
def __init__(self) -> None:
|
13 |
os.environ["OPENAI_API_KEY"] = "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"
|
14 |
-
self.llm = OpenAI(temperature=0.0)
|
15 |
|
16 |
def get_transcription(self, text):
|
17 |
transcribe_prompt = PromptTemplate(
|
|
|
11 |
|
12 |
def __init__(self) -> None:
|
13 |
os.environ["OPENAI_API_KEY"] = "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"
|
14 |
+
self.llm = OpenAI(model_name="text-davinci-003", temperature=0.0)
|
15 |
|
16 |
def get_transcription(self, text):
|
17 |
transcribe_prompt = PromptTemplate(
|
prompts.py
CHANGED
@@ -9,14 +9,16 @@ Transcription: {text}
|
|
9 |
# Prompt template
|
10 |
prompt_command = """You are in control of an Unmanned Aerial Vehicle or UAV.
|
11 |
You are going to be given a sentence command, you need to find the action of
|
12 |
-
the sentence. The action will be, TAKEPICTURE, TAKEOFF, LAND or GOTO
|
13 |
-
action is not one of those actions return "NONE". ONLY give those commands or
|
14 |
-
"NONE", NEVER anything else. If the action is "TAKEOFF", "LAND" or "NONE" you
|
15 |
-
don't need any further information for the location. If the action is "GOTO" or
|
16 |
-
"TAKEPICTURE", you'll need to find where to carry out the action. If the action
|
17 |
-
is "GOTO" or "TAKEPICTURE" with no location following return "None".
|
18 |
|
19 |
-
If
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
You need to return the command in this format: <command> \t<goal>
|
22 |
|
@@ -41,84 +43,84 @@ examples_few_shot = [
|
|
41 |
# Location only
|
42 |
{
|
43 |
"sentence": "Kroger on N Lombardy St.",
|
44 |
-
"command": "
|
45 |
},
|
46 |
{
|
47 |
"sentence": "CVS at Main St.",
|
48 |
-
"command": "
|
49 |
},
|
50 |
{
|
51 |
"sentence": "Short Pump Town Center.",
|
52 |
-
"command": "
|
53 |
},
|
54 |
{
|
55 |
"sentence": "Can Can Brasserie.",
|
56 |
-
"command": "
|
57 |
},
|
58 |
{
|
59 |
"sentence": "Walgreens.",
|
60 |
-
"command": "
|
61 |
},
|
62 |
{
|
63 |
"sentence": "Best Buy in Colonial Heights.",
|
64 |
-
"command": "
|
65 |
},
|
66 |
{
|
67 |
"sentence": "The red house to the left.",
|
68 |
-
"command": "
|
69 |
},
|
70 |
{
|
71 |
"sentence": "The Science Museum.",
|
72 |
-
"command": "
|
73 |
},
|
74 |
{
|
75 |
"sentence": "South Park Mall.",
|
76 |
-
"command": "
|
77 |
},
|
78 |
# Commands that don't require a location
|
79 |
{
|
80 |
"sentence": "Take off now.",
|
81 |
-
"command": "
|
82 |
},
|
83 |
{
|
84 |
"sentence": "Take off from where you are.",
|
85 |
-
"command": "
|
86 |
},
|
87 |
{
|
88 |
"sentence": "Take off.",
|
89 |
-
"command": "
|
90 |
},
|
91 |
{
|
92 |
"sentence": "Take off at your position.",
|
93 |
-
"command": "
|
94 |
},
|
95 |
{
|
96 |
"sentence": "Take off from where you are at.",
|
97 |
-
"command": "
|
98 |
},
|
99 |
{
|
100 |
"sentence": "Lift off.",
|
101 |
-
"command": "
|
102 |
},
|
103 |
{
|
104 |
"sentence": "Land now.",
|
105 |
-
"command": "
|
106 |
},
|
107 |
{
|
108 |
"sentence": "Cease flight.",
|
109 |
-
"command": "
|
110 |
},
|
111 |
{
|
112 |
"sentence": "Stop the flight.",
|
113 |
-
"command": "
|
114 |
},
|
115 |
{
|
116 |
"sentence": "Stop flying.",
|
117 |
-
"command": "
|
118 |
},
|
119 |
{
|
120 |
"sentence": "Take flight.",
|
121 |
-
"command": "
|
122 |
},
|
123 |
# Commands that require a location but don't have any
|
124 |
{
|
@@ -139,27 +141,27 @@ examples_few_shot = [
|
|
139 |
},
|
140 |
{
|
141 |
"sentence": "Proceed to.",
|
142 |
-
"command": "NONE"
|
143 |
},
|
144 |
{
|
145 |
"sentence": "Push to.",
|
146 |
-
"command": "NONE"
|
147 |
},
|
148 |
{
|
149 |
"sentence": "Advance to.",
|
150 |
-
"command": "NONE"
|
151 |
},
|
152 |
{
|
153 |
"sentence": "Make your way to.",
|
154 |
-
"command": "NONE"
|
155 |
},
|
156 |
{
|
157 |
"sentence": "Travel to.",
|
158 |
-
"command": "NONE"
|
159 |
},
|
160 |
{
|
161 |
"sentence": "Go to.",
|
162 |
-
"command": "NONE"
|
163 |
},
|
164 |
{
|
165 |
"sentence": "Take a picture.",
|
@@ -172,65 +174,65 @@ examples_few_shot = [
|
|
172 |
# Commands with one action and one location
|
173 |
{
|
174 |
"sentence": "Fly to the Sonic on West Cary St.",
|
175 |
-
"command": "
|
176 |
},
|
177 |
{
|
178 |
"sentence": "Check out the gym at Cary St.",
|
179 |
-
"command": "
|
180 |
},
|
181 |
{
|
182 |
"sentence": "Investigate the Rite Aid on Broad and Belevidere.",
|
183 |
-
"command": "
|
184 |
},
|
185 |
{
|
186 |
"sentence": "Go to Papa Johns at 1200 W Main St.",
|
187 |
-
"command": "
|
188 |
},
|
189 |
{
|
190 |
"sentence": "Go to the orange house on W Grace St.",
|
191 |
-
"command": "
|
192 |
},
|
193 |
{
|
194 |
"sentence": "Travel to Cabell Library at VCU.",
|
195 |
-
"command": "
|
196 |
},
|
197 |
-
# Commands with one action and one location but with extra words
|
198 |
{
|
199 |
-
"sentence": "
|
200 |
-
"command": "
|
201 |
},
|
202 |
-
# Commands with multiple actions
|
203 |
{
|
204 |
-
"sentence": "
|
205 |
-
"command": "
|
206 |
},
|
|
|
207 |
{
|
208 |
-
"sentence": "
|
209 |
-
"command": "
|
210 |
},
|
|
|
211 |
{
|
212 |
-
"sentence": "
|
213 |
-
"command": "
|
214 |
},
|
215 |
{
|
216 |
-
"sentence": "
|
217 |
-
"command": "
|
218 |
},
|
219 |
-
# Commands with multiple actions and multiple locations
|
220 |
{
|
221 |
-
"sentence": "Take a picture of the light blue building on Harrowgate Road, then go to the Wawa on Route 1",
|
222 |
-
"command": "
|
223 |
},
|
224 |
{
|
225 |
-
"sentence": "Check out the yellow house on Clay St, then go to the Commons on W Main St",
|
226 |
-
"command": "
|
227 |
},
|
228 |
{
|
229 |
"sentence": "Investigate the 7/11 on W Grace St, then go to the Barnes and Noble on W Broad St, then take a picture of it.",
|
230 |
-
"command": "
|
231 |
},
|
232 |
{
|
233 |
"sentence": "Go to the grey one story flat on Happy Hill Rd, then go to the Food Lion on the same road, then take a picture of it.",
|
234 |
-
"command": "
|
235 |
}
|
236 |
-
|
|
|
|
9 |
# Prompt template
|
10 |
prompt_command = """You are in control of an Unmanned Aerial Vehicle or UAV.
|
11 |
You are going to be given a sentence command, you need to find the action of
|
12 |
+
the sentence. The action will be, "TAKEPICTURE" (Take picture), "TAKEOFF" (Take off), "LAND" (Land) or "GOTO" (Go to).
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
+
If the action is not one of those actions return "NONE".
|
15 |
+
|
16 |
+
If the action is "TAKEOFF" (Take off), "LAND" (Land), or "NONE" you don't need any further information for the location.
|
17 |
+
If the action is "GOTO" (Go to) or "TAKEPICTURE" (Take picture), you'll need to find where to carry out the action.
|
18 |
+
|
19 |
+
If the action is "GOTO" (Go to) or "TAKEPICTURE" (Take picture) with no location following it, return "NONE".
|
20 |
+
|
21 |
+
If you can't find the actions "TAKEPICTURE" (Take picture), "TAKEOFF" (Take off), "LAND" (Land), or "GOTO" (Go to), return "NONE".
|
22 |
|
23 |
You need to return the command in this format: <command> \t<goal>
|
24 |
|
|
|
43 |
# Location only
|
44 |
{
|
45 |
"sentence": "Kroger on N Lombardy St.",
|
46 |
+
"command": "GOTO \tKroger on N Lombardy St"
|
47 |
},
|
48 |
{
|
49 |
"sentence": "CVS at Main St.",
|
50 |
+
"command": "GOTO \tCVS at Main St"
|
51 |
},
|
52 |
{
|
53 |
"sentence": "Short Pump Town Center.",
|
54 |
+
"command": "GOTO \tShort Pump Town Center"
|
55 |
},
|
56 |
{
|
57 |
"sentence": "Can Can Brasserie.",
|
58 |
+
"command": "GOTO \tCan Can Brasserie"
|
59 |
},
|
60 |
{
|
61 |
"sentence": "Walgreens.",
|
62 |
+
"command": "GOTO \tWalgreens"
|
63 |
},
|
64 |
{
|
65 |
"sentence": "Best Buy in Colonial Heights.",
|
66 |
+
"command": "GOTO \tBest Buy in Colonial Heights"
|
67 |
},
|
68 |
{
|
69 |
"sentence": "The red house to the left.",
|
70 |
+
"command": "GOTO \tred house to the left"
|
71 |
},
|
72 |
{
|
73 |
"sentence": "The Science Museum.",
|
74 |
+
"command": "GOTO \tScience Museum"
|
75 |
},
|
76 |
{
|
77 |
"sentence": "South Park Mall.",
|
78 |
+
"command": "GOTO \tSouth Park Mall"
|
79 |
},
|
80 |
# Commands that don't require a location
|
81 |
{
|
82 |
"sentence": "Take off now.",
|
83 |
+
"command": "TAKEOFF"
|
84 |
},
|
85 |
{
|
86 |
"sentence": "Take off from where you are.",
|
87 |
+
"command": "TAKEOFF"
|
88 |
},
|
89 |
{
|
90 |
"sentence": "Take off.",
|
91 |
+
"command": "TAKEOFF"
|
92 |
},
|
93 |
{
|
94 |
"sentence": "Take off at your position.",
|
95 |
+
"command": "TAKEOFF"
|
96 |
},
|
97 |
{
|
98 |
"sentence": "Take off from where you are at.",
|
99 |
+
"command": "TAKEOFF"
|
100 |
},
|
101 |
{
|
102 |
"sentence": "Lift off.",
|
103 |
+
"command": "TAKEOFF"
|
104 |
},
|
105 |
{
|
106 |
"sentence": "Land now.",
|
107 |
+
"command": "LAND"
|
108 |
},
|
109 |
{
|
110 |
"sentence": "Cease flight.",
|
111 |
+
"command": "LAND"
|
112 |
},
|
113 |
{
|
114 |
"sentence": "Stop the flight.",
|
115 |
+
"command": "LAND"
|
116 |
},
|
117 |
{
|
118 |
"sentence": "Stop flying.",
|
119 |
+
"command": "LAND"
|
120 |
},
|
121 |
{
|
122 |
"sentence": "Take flight.",
|
123 |
+
"command": "TAKEOFF"
|
124 |
},
|
125 |
# Commands that require a location but don't have any
|
126 |
{
|
|
|
141 |
},
|
142 |
{
|
143 |
"sentence": "Proceed to.",
|
144 |
+
"command": "NONE"
|
145 |
},
|
146 |
{
|
147 |
"sentence": "Push to.",
|
148 |
+
"command": "NONE"
|
149 |
},
|
150 |
{
|
151 |
"sentence": "Advance to.",
|
152 |
+
"command": "NONE"
|
153 |
},
|
154 |
{
|
155 |
"sentence": "Make your way to.",
|
156 |
+
"command": "NONE"
|
157 |
},
|
158 |
{
|
159 |
"sentence": "Travel to.",
|
160 |
+
"command": "NONE"
|
161 |
},
|
162 |
{
|
163 |
"sentence": "Go to.",
|
164 |
+
"command": "NONE"
|
165 |
},
|
166 |
{
|
167 |
"sentence": "Take a picture.",
|
|
|
174 |
# Commands with one action and one location
|
175 |
{
|
176 |
"sentence": "Fly to the Sonic on West Cary St.",
|
177 |
+
"command": "GOTO \tSonic on West Cary St."
|
178 |
},
|
179 |
{
|
180 |
"sentence": "Check out the gym at Cary St.",
|
181 |
+
"command": "GOTO \tgym at Cary St"
|
182 |
},
|
183 |
{
|
184 |
"sentence": "Investigate the Rite Aid on Broad and Belevidere.",
|
185 |
+
"command": "GOTO \tRite Aid on Broad and Belevidere"
|
186 |
},
|
187 |
{
|
188 |
"sentence": "Go to Papa Johns at 1200 W Main St.",
|
189 |
+
"command": "GOTO \tPapa Johns at 1200 W Main St"
|
190 |
},
|
191 |
{
|
192 |
"sentence": "Go to the orange house on W Grace St.",
|
193 |
+
"command": "GOTO \torange house on W Grace St"
|
194 |
},
|
195 |
{
|
196 |
"sentence": "Travel to Cabell Library at VCU.",
|
197 |
+
"command": "GOTO \tCabell Library at VCU"
|
198 |
},
|
|
|
199 |
{
|
200 |
+
"sentence": "Take a picture of the park.",
|
201 |
+
"command": "TAKEPICTURE \tpark"
|
202 |
},
|
|
|
203 |
{
|
204 |
+
"sentence": "Take a picture of the Kroger on Lombardy St.",
|
205 |
+
"command": "TAKEPICTURE \tKroger on Lombardy St"
|
206 |
},
|
207 |
+
# Commands with one action and one location but with extra words
|
208 |
{
|
209 |
+
"sentence": "Please check out the CVS on W Broad St.",
|
210 |
+
"command": "GOTO \tCVS on W Broad St"
|
211 |
},
|
212 |
+
# Commands with multiple actions
|
213 |
{
|
214 |
+
"sentence": "Go to the purple house on to the left and take a picture.",
|
215 |
+
"command": "GOTO \tpurple house on to the left\nTAKEPICTURE \tpurple house on to the left"
|
216 |
},
|
217 |
{
|
218 |
+
"sentence": "Go to Kroger on Iron Bridge and take a picture.",
|
219 |
+
"command": "GOTO \tKroger on Iron Bridge\nTAKEPICTURE \tKroger on Iron Bridge"
|
220 |
},
|
|
|
221 |
{
|
222 |
+
"sentence": "Take a picture of the light blue building on Harrowgate Road, then go to the Wawa on Route 1.",
|
223 |
+
"command": "TAKEPICTURE \tlight blue building on Harrowgate Road\nGOTO \tWawa on Route 1"
|
224 |
},
|
225 |
{
|
226 |
+
"sentence": "Check out the yellow house on Clay St, then go to the Commons on W Main St.",
|
227 |
+
"command": "GOTO \tyellow house on Clay St\nGOTO \tCommons on W Main St"
|
228 |
},
|
229 |
{
|
230 |
"sentence": "Investigate the 7/11 on W Grace St, then go to the Barnes and Noble on W Broad St, then take a picture of it.",
|
231 |
+
"command": "GOTO \t7/11 on W Grace St\nGOTO \tBarnes and Noble on W Broad S\nTAKEPICTURE \tBarnes and Noble on W Broad St"
|
232 |
},
|
233 |
{
|
234 |
"sentence": "Go to the grey one story flat on Happy Hill Rd, then go to the Food Lion on the same road, then take a picture of it.",
|
235 |
+
"command": "GOTO \tgrey one story flat on Happy Hill Rd\nGOTO \tFood Lion on Happy Hill Rd\nTAKEPICTURE \tFood Lion on Happy Hill Rd"
|
236 |
}
|
237 |
+
# Commands with multiple actions and multiple locations
|
238 |
+
]
|
requirements.txt
ADDED
@@ -0,0 +1,306 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
aiofiles==23.1.0
|
2 |
+
aiohttp==3.8.4
|
3 |
+
aiosignal==1.3.1
|
4 |
+
altair==5.0.1
|
5 |
+
aniso8601==9.0.1
|
6 |
+
antlr4-python3-runtime==4.9.3
|
7 |
+
anyio==3.6.2
|
8 |
+
argilla==1.1.1
|
9 |
+
async-timeout==4.0.2
|
10 |
+
attrs==23.1.0
|
11 |
+
backoff==2.2.1
|
12 |
+
certifi==2023.5.7
|
13 |
+
cffi==1.15.1
|
14 |
+
chardet==5.1.0
|
15 |
+
charset-normalizer==3.1.0
|
16 |
+
chromadb==0.3.25
|
17 |
+
click==8.1.3
|
18 |
+
clickhouse-connect==0.5.25
|
19 |
+
coloredlogs==15.0.1
|
20 |
+
contourpy==1.0.7
|
21 |
+
cryptography==40.0.2
|
22 |
+
cycler==0.11.0
|
23 |
+
dataclasses-json==0.5.7
|
24 |
+
Deprecated==1.2.13
|
25 |
+
duckdb==0.8.0
|
26 |
+
effdet==0.4.1
|
27 |
+
et-xmlfile==1.1.0
|
28 |
+
fastapi==0.95.2
|
29 |
+
ffmpeg-python==0.2.0
|
30 |
+
ffmpy==0.3.0
|
31 |
+
filelock==3.12.0
|
32 |
+
Flask==2.2.3
|
33 |
+
Flask-RESTful==0.3.10
|
34 |
+
flatbuffers==23.5.9
|
35 |
+
fonttools==4.39.4
|
36 |
+
frozenlist==1.3.3
|
37 |
+
fsspec==2023.5.0
|
38 |
+
future==0.18.3
|
39 |
+
gradio==3.35.2
|
40 |
+
gradio_client==0.2.7
|
41 |
+
h11==0.9.0
|
42 |
+
hnswlib==0.7.0
|
43 |
+
httpcore==0.11.1
|
44 |
+
httptools==0.5.0
|
45 |
+
httpx==0.15.5
|
46 |
+
huggingface-hub==0.14.1
|
47 |
+
humanfriendly==10.0
|
48 |
+
idna==3.4
|
49 |
+
iniconfig==2.0.0
|
50 |
+
iopath==0.1.10
|
51 |
+
itsdangerous==2.1.2
|
52 |
+
Jinja2==3.1.2
|
53 |
+
joblib==1.2.0
|
54 |
+
jsonschema==4.17.3
|
55 |
+
kiwisolver==1.4.4
|
56 |
+
langchain==0.0.129
|
57 |
+
layoutparser==0.3.4
|
58 |
+
linkify-it-py==2.0.2
|
59 |
+
llvmlite==0.40.0
|
60 |
+
load-dotenv==0.1.0
|
61 |
+
lxml==4.9.2
|
62 |
+
lz4==4.3.2
|
63 |
+
Markdown==3.4.3
|
64 |
+
markdown-it-py==2.2.0
|
65 |
+
MarkupSafe==2.1.2
|
66 |
+
marshmallow==3.19.0
|
67 |
+
marshmallow-enum==1.5.1
|
68 |
+
matplotlib==3.7.1
|
69 |
+
mdit-py-plugins==0.3.3
|
70 |
+
mdurl==0.1.2
|
71 |
+
monotonic==1.6
|
72 |
+
more-itertools==9.1.0
|
73 |
+
mpmath==1.3.0
|
74 |
+
msg-parser==1.2.0
|
75 |
+
multidict==6.0.4
|
76 |
+
mypy-extensions==1.0.0
|
77 |
+
networkx==3.1
|
78 |
+
nltk==3.8.1
|
79 |
+
numba==0.57.0
|
80 |
+
numpy==1.24.3
|
81 |
+
olefile==0.46
|
82 |
+
omegaconf==2.3.0
|
83 |
+
onnxruntime==1.15.0
|
84 |
+
openai==0.27.2
|
85 |
+
openai-whisper==20230314
|
86 |
+
opencv-python==4.7.0.72
|
87 |
+
openpyxl==3.1.2
|
88 |
+
orjson==3.9.1
|
89 |
+
overrides==7.3.1
|
90 |
+
packaging==23.1
|
91 |
+
pandas==1.5.3
|
92 |
+
pdf2image==1.16.3
|
93 |
+
pdfminer.six==20221105
|
94 |
+
pdfplumber==0.9.0
|
95 |
+
Pillow==9.5.0
|
96 |
+
pluggy==1.2.0
|
97 |
+
portalocker==2.7.0
|
98 |
+
posthog==3.0.1
|
99 |
+
protobuf==4.23.1
|
100 |
+
pycocotools==2.0.6
|
101 |
+
pycparser==2.21
|
102 |
+
pydantic==1.10.8
|
103 |
+
pydub==0.25.1
|
104 |
+
Pygments==2.15.1
|
105 |
+
pyobjc==9.1.1
|
106 |
+
pyobjc-core==9.1.1
|
107 |
+
pyobjc-framework-Accessibility==9.1.1
|
108 |
+
pyobjc-framework-Accounts==9.1.1
|
109 |
+
pyobjc-framework-AddressBook==9.1.1
|
110 |
+
pyobjc-framework-AdServices==9.1.1
|
111 |
+
pyobjc-framework-AdSupport==9.1.1
|
112 |
+
pyobjc-framework-AppleScriptKit==9.1.1
|
113 |
+
pyobjc-framework-AppleScriptObjC==9.1.1
|
114 |
+
pyobjc-framework-ApplicationServices==9.1.1
|
115 |
+
pyobjc-framework-AppTrackingTransparency==9.1.1
|
116 |
+
pyobjc-framework-AudioVideoBridging==9.1.1
|
117 |
+
pyobjc-framework-AuthenticationServices==9.1.1
|
118 |
+
pyobjc-framework-AutomaticAssessmentConfiguration==9.1.1
|
119 |
+
pyobjc-framework-Automator==9.1.1
|
120 |
+
pyobjc-framework-AVFoundation==9.1.1
|
121 |
+
pyobjc-framework-AVKit==9.1.1
|
122 |
+
pyobjc-framework-AVRouting==9.1.1
|
123 |
+
pyobjc-framework-BackgroundAssets==9.1.1
|
124 |
+
pyobjc-framework-BusinessChat==9.1.1
|
125 |
+
pyobjc-framework-CalendarStore==9.1.1
|
126 |
+
pyobjc-framework-CallKit==9.1.1
|
127 |
+
pyobjc-framework-CFNetwork==9.1.1
|
128 |
+
pyobjc-framework-ClassKit==9.1.1
|
129 |
+
pyobjc-framework-CloudKit==9.1.1
|
130 |
+
pyobjc-framework-Cocoa==9.1.1
|
131 |
+
pyobjc-framework-Collaboration==9.1.1
|
132 |
+
pyobjc-framework-ColorSync==9.1.1
|
133 |
+
pyobjc-framework-Contacts==9.1.1
|
134 |
+
pyobjc-framework-ContactsUI==9.1.1
|
135 |
+
pyobjc-framework-CoreAudio==9.1.1
|
136 |
+
pyobjc-framework-CoreAudioKit==9.1.1
|
137 |
+
pyobjc-framework-CoreBluetooth==9.1.1
|
138 |
+
pyobjc-framework-CoreData==9.1.1
|
139 |
+
pyobjc-framework-CoreHaptics==9.1.1
|
140 |
+
pyobjc-framework-CoreLocation==9.1.1
|
141 |
+
pyobjc-framework-CoreMedia==9.1.1
|
142 |
+
pyobjc-framework-CoreMediaIO==9.1.1
|
143 |
+
pyobjc-framework-CoreMIDI==9.1.1
|
144 |
+
pyobjc-framework-CoreML==9.1.1
|
145 |
+
pyobjc-framework-CoreMotion==9.1.1
|
146 |
+
pyobjc-framework-CoreServices==9.1.1
|
147 |
+
pyobjc-framework-CoreSpotlight==9.1.1
|
148 |
+
pyobjc-framework-CoreText==9.1.1
|
149 |
+
pyobjc-framework-CoreWLAN==9.1.1
|
150 |
+
pyobjc-framework-CryptoTokenKit==9.1.1
|
151 |
+
pyobjc-framework-DataDetection==9.1.1
|
152 |
+
pyobjc-framework-DeviceCheck==9.1.1
|
153 |
+
pyobjc-framework-DictionaryServices==9.1.1
|
154 |
+
pyobjc-framework-DiscRecording==9.1.1
|
155 |
+
pyobjc-framework-DiscRecordingUI==9.1.1
|
156 |
+
pyobjc-framework-DiskArbitration==9.1.1
|
157 |
+
pyobjc-framework-DVDPlayback==9.1.1
|
158 |
+
pyobjc-framework-EventKit==9.1.1
|
159 |
+
pyobjc-framework-ExceptionHandling==9.1.1
|
160 |
+
pyobjc-framework-ExecutionPolicy==9.1.1
|
161 |
+
pyobjc-framework-ExtensionKit==9.1.1
|
162 |
+
pyobjc-framework-ExternalAccessory==9.1.1
|
163 |
+
pyobjc-framework-FileProvider==9.1.1
|
164 |
+
pyobjc-framework-FileProviderUI==9.1.1
|
165 |
+
pyobjc-framework-FinderSync==9.1.1
|
166 |
+
pyobjc-framework-FSEvents==9.1.1
|
167 |
+
pyobjc-framework-GameCenter==9.1.1
|
168 |
+
pyobjc-framework-GameController==9.1.1
|
169 |
+
pyobjc-framework-GameKit==9.1.1
|
170 |
+
pyobjc-framework-GameplayKit==9.1.1
|
171 |
+
pyobjc-framework-HealthKit==9.1.1
|
172 |
+
pyobjc-framework-ImageCaptureCore==9.1.1
|
173 |
+
pyobjc-framework-IMServicePlugIn==9.1.1
|
174 |
+
pyobjc-framework-InputMethodKit==9.1.1
|
175 |
+
pyobjc-framework-InstallerPlugins==9.1.1
|
176 |
+
pyobjc-framework-InstantMessage==9.1.1
|
177 |
+
pyobjc-framework-Intents==9.1.1
|
178 |
+
pyobjc-framework-IntentsUI==9.1.1
|
179 |
+
pyobjc-framework-IOBluetooth==9.1.1
|
180 |
+
pyobjc-framework-IOBluetoothUI==9.1.1
|
181 |
+
pyobjc-framework-IOSurface==9.1.1
|
182 |
+
pyobjc-framework-iTunesLibrary==9.1.1
|
183 |
+
pyobjc-framework-KernelManagement==9.1.1
|
184 |
+
pyobjc-framework-LatentSemanticMapping==9.1.1
|
185 |
+
pyobjc-framework-LaunchServices==9.1.1
|
186 |
+
pyobjc-framework-libdispatch==9.1.1
|
187 |
+
pyobjc-framework-libxpc==9.1.1
|
188 |
+
pyobjc-framework-LinkPresentation==9.1.1
|
189 |
+
pyobjc-framework-LocalAuthentication==9.1.1
|
190 |
+
pyobjc-framework-LocalAuthenticationEmbeddedUI==9.1.1
|
191 |
+
pyobjc-framework-MailKit==9.1.1
|
192 |
+
pyobjc-framework-MapKit==9.1.1
|
193 |
+
pyobjc-framework-MediaAccessibility==9.1.1
|
194 |
+
pyobjc-framework-MediaLibrary==9.1.1
|
195 |
+
pyobjc-framework-MediaPlayer==9.1.1
|
196 |
+
pyobjc-framework-MediaToolbox==9.1.1
|
197 |
+
pyobjc-framework-Metal==9.1.1
|
198 |
+
pyobjc-framework-MetalFX==9.1.1
|
199 |
+
pyobjc-framework-MetalKit==9.1.1
|
200 |
+
pyobjc-framework-MetalPerformanceShaders==9.1.1
|
201 |
+
pyobjc-framework-MetalPerformanceShadersGraph==9.1.1
|
202 |
+
pyobjc-framework-MetricKit==9.1.1
|
203 |
+
pyobjc-framework-MLCompute==9.1.1
|
204 |
+
pyobjc-framework-ModelIO==9.1.1
|
205 |
+
pyobjc-framework-MultipeerConnectivity==9.1.1
|
206 |
+
pyobjc-framework-NaturalLanguage==9.1.1
|
207 |
+
pyobjc-framework-NetFS==9.1.1
|
208 |
+
pyobjc-framework-Network==9.1.1
|
209 |
+
pyobjc-framework-NetworkExtension==9.1.1
|
210 |
+
pyobjc-framework-NotificationCenter==9.1.1
|
211 |
+
pyobjc-framework-OpenDirectory==9.1.1
|
212 |
+
pyobjc-framework-OSAKit==9.1.1
|
213 |
+
pyobjc-framework-OSLog==9.1.1
|
214 |
+
pyobjc-framework-PassKit==9.1.1
|
215 |
+
pyobjc-framework-PencilKit==9.1.1
|
216 |
+
pyobjc-framework-PHASE==9.1.1
|
217 |
+
pyobjc-framework-Photos==9.1.1
|
218 |
+
pyobjc-framework-PhotosUI==9.1.1
|
219 |
+
pyobjc-framework-PreferencePanes==9.1.1
|
220 |
+
pyobjc-framework-PushKit==9.1.1
|
221 |
+
pyobjc-framework-Quartz==9.1.1
|
222 |
+
pyobjc-framework-QuickLookThumbnailing==9.1.1
|
223 |
+
pyobjc-framework-ReplayKit==9.1.1
|
224 |
+
pyobjc-framework-SafariServices==9.1.1
|
225 |
+
pyobjc-framework-SafetyKit==9.1.1
|
226 |
+
pyobjc-framework-SceneKit==9.1.1
|
227 |
+
pyobjc-framework-ScreenCaptureKit==9.1.1
|
228 |
+
pyobjc-framework-ScreenSaver==9.1.1
|
229 |
+
pyobjc-framework-ScreenTime==9.1.1
|
230 |
+
pyobjc-framework-ScriptingBridge==9.1.1
|
231 |
+
pyobjc-framework-SearchKit==9.1.1
|
232 |
+
pyobjc-framework-Security==9.1.1
|
233 |
+
pyobjc-framework-SecurityFoundation==9.1.1
|
234 |
+
pyobjc-framework-SecurityInterface==9.1.1
|
235 |
+
pyobjc-framework-ServiceManagement==9.1.1
|
236 |
+
pyobjc-framework-SharedWithYou==9.1.1
|
237 |
+
pyobjc-framework-SharedWithYouCore==9.1.1
|
238 |
+
pyobjc-framework-ShazamKit==9.1.1
|
239 |
+
pyobjc-framework-Social==9.1.1
|
240 |
+
pyobjc-framework-SoundAnalysis==9.1.1
|
241 |
+
pyobjc-framework-Speech==9.1.1
|
242 |
+
pyobjc-framework-SpriteKit==9.1.1
|
243 |
+
pyobjc-framework-StoreKit==9.1.1
|
244 |
+
pyobjc-framework-SyncServices==9.1.1
|
245 |
+
pyobjc-framework-SystemConfiguration==9.1.1
|
246 |
+
pyobjc-framework-SystemExtensions==9.1.1
|
247 |
+
pyobjc-framework-ThreadNetwork==9.1.1
|
248 |
+
pyobjc-framework-UniformTypeIdentifiers==9.1.1
|
249 |
+
pyobjc-framework-UserNotifications==9.1.1
|
250 |
+
pyobjc-framework-UserNotificationsUI==9.1.1
|
251 |
+
pyobjc-framework-VideoSubscriberAccount==9.1.1
|
252 |
+
pyobjc-framework-VideoToolbox==9.1.1
|
253 |
+
pyobjc-framework-Virtualization==9.1.1
|
254 |
+
pyobjc-framework-Vision==9.1.1
|
255 |
+
pyobjc-framework-WebKit==9.1.1
|
256 |
+
pypandoc==1.11
|
257 |
+
pyparsing==3.0.9
|
258 |
+
pyrsistent==0.19.3
|
259 |
+
pytesseract==0.3.10
|
260 |
+
pytest==7.4.0
|
261 |
+
python-dateutil==2.8.2
|
262 |
+
python-docx==0.8.11
|
263 |
+
python-dotenv==1.0.0
|
264 |
+
python-magic==0.4.27
|
265 |
+
python-multipart==0.0.6
|
266 |
+
python-pptx==0.6.21
|
267 |
+
pyttsx3==2.90
|
268 |
+
pytz==2023.3
|
269 |
+
PyYAML==6.0
|
270 |
+
regex==2023.5.5
|
271 |
+
requests==2.31.0
|
272 |
+
rfc3986==1.5.0
|
273 |
+
safetensors==0.3.1
|
274 |
+
scipy==1.10.1
|
275 |
+
semantic-version==2.10.0
|
276 |
+
setuptools-rust==1.5.2
|
277 |
+
six==1.16.0
|
278 |
+
sniffio==1.3.0
|
279 |
+
SQLAlchemy==1.4.48
|
280 |
+
starlette==0.27.0
|
281 |
+
sympy==1.12
|
282 |
+
tenacity==8.2.2
|
283 |
+
tiktoken==0.3.1
|
284 |
+
timm==0.9.2
|
285 |
+
tokenizers==0.13.3
|
286 |
+
toolz==0.12.0
|
287 |
+
torch==2.0.1
|
288 |
+
torchvision==0.15.2
|
289 |
+
tqdm==4.65.0
|
290 |
+
transformers==4.29.2
|
291 |
+
typing-inspect==0.9.0
|
292 |
+
typing_extensions==4.6.2
|
293 |
+
uc-micro-py==1.0.2
|
294 |
+
unstructured==0.6.9
|
295 |
+
unstructured-inference==0.4.4
|
296 |
+
urllib3==2.0.2
|
297 |
+
uvicorn==0.22.0
|
298 |
+
uvloop==0.17.0
|
299 |
+
Wand==0.6.11
|
300 |
+
watchfiles==0.19.0
|
301 |
+
websockets==11.0.3
|
302 |
+
Werkzeug==2.3.4
|
303 |
+
wrapt==1.13.3
|
304 |
+
XlsxWriter==3.1.1
|
305 |
+
yarl==1.9.2
|
306 |
+
zstandard==0.21.0
|
test/.pytest_cache/v/cache/lastfailed
CHANGED
@@ -1,23 +1,5 @@
|
|
1 |
{
|
2 |
"test_chatgpt4uavs.py::test_red_house": true,
|
3 |
-
"test_chatgpt4uavs.py
|
4 |
-
"
|
5 |
-
"test_chatgpt4uavs.py::test_picture": true,
|
6 |
-
"test_chatgpt4uavs.py::test_snap_pic": true,
|
7 |
-
"test_chatgpt4uavs.py::test_purple_house": true,
|
8 |
-
"test_chatgpt4uavs.py::test_parking_garage": true,
|
9 |
-
"test_chatgpt4uavs.py::test_gym": true,
|
10 |
-
"test_chatgpt4uavs.py::test_cease_flight": true,
|
11 |
-
"test_chatgpt4uavs.py::test_stop_flight": true,
|
12 |
-
"test_chatgpt4uavs.py::test_lift_off": true,
|
13 |
-
"test_chatgpt4uavs.py::test_no_location1": true,
|
14 |
-
"test_chatgpt4uavs.py::test_no_location2": true,
|
15 |
-
"test_chatgpt4uavs.py::test_no_location3": true,
|
16 |
-
"test_fewshot.py::test_stop_flight1": true,
|
17 |
-
"test_fewshot.py::test_invalid_command2": true,
|
18 |
-
"test_fewshot.py::test_location_no_action4": true,
|
19 |
-
"test_fewshot.py::test_action_and_location_synonyms": true,
|
20 |
-
"test_fewshot.py::test_action_synonyms": true,
|
21 |
-
"test_fewshot.py::test_action_and_location": true,
|
22 |
-
"test_fewshot.py::test_multiple_actions": true
|
23 |
}
|
|
|
1 |
{
|
2 |
"test_chatgpt4uavs.py::test_red_house": true,
|
3 |
+
"test_chatgpt4uavs.py": true,
|
4 |
+
"test_fewshot.py": true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
}
|
test/.pytest_cache/v/cache/nodeids
CHANGED
@@ -1,56 +1,4 @@
|
|
1 |
[
|
2 |
-
"test_chatgpt4uavs.py::test_cease_flight",
|
3 |
-
"test_chatgpt4uavs.py::test_gym",
|
4 |
-
"test_chatgpt4uavs.py::test_land",
|
5 |
-
"test_chatgpt4uavs.py::test_lift_off",
|
6 |
-
"test_chatgpt4uavs.py::test_no_location1",
|
7 |
-
"test_chatgpt4uavs.py::test_no_location2",
|
8 |
-
"test_chatgpt4uavs.py::test_no_location3",
|
9 |
-
"test_chatgpt4uavs.py::test_parking_garage",
|
10 |
-
"test_chatgpt4uavs.py::test_picture",
|
11 |
-
"test_chatgpt4uavs.py::test_purple_house",
|
12 |
"test_chatgpt4uavs.py::test_red_house",
|
13 |
-
"
|
14 |
-
"test_chatgpt4uavs.py::test_stop_flight",
|
15 |
-
"test_chatgpt4uavs.py::test_take_off",
|
16 |
-
"test_fewshot.py::test_action_and_location",
|
17 |
-
"test_fewshot.py::test_action_and_location_synonyms",
|
18 |
-
"test_fewshot.py::test_action_synonyms",
|
19 |
-
"test_fewshot.py::test_cease_flight",
|
20 |
-
"test_fewshot.py::test_empty_input",
|
21 |
-
"test_fewshot.py::test_gym",
|
22 |
-
"test_fewshot.py::test_invalid_command",
|
23 |
-
"test_fewshot.py::test_invalid_command1",
|
24 |
-
"test_fewshot.py::test_invalid_command2",
|
25 |
-
"test_fewshot.py::test_land",
|
26 |
-
"test_fewshot.py::test_lift_off",
|
27 |
-
"test_fewshot.py::test_location_no_action",
|
28 |
-
"test_fewshot.py::test_location_no_action2",
|
29 |
-
"test_fewshot.py::test_location_no_action3",
|
30 |
-
"test_fewshot.py::test_location_no_action4",
|
31 |
-
"test_fewshot.py::test_multiple_actions",
|
32 |
-
"test_fewshot.py::test_multiple_actions1",
|
33 |
-
"test_fewshot.py::test_multiple_actions2",
|
34 |
-
"test_fewshot.py::test_multiple_actions3",
|
35 |
-
"test_fewshot.py::test_multiple_actions4",
|
36 |
-
"test_fewshot.py::test_multiple_actions5",
|
37 |
-
"test_fewshot.py::test_multiple_actions_and_locations",
|
38 |
-
"test_fewshot.py::test_multiple_actions_and_locations1",
|
39 |
-
"test_fewshot.py::test_multiple_actions_and_locations2",
|
40 |
-
"test_fewshot.py::test_no_location1",
|
41 |
-
"test_fewshot.py::test_no_location2",
|
42 |
-
"test_fewshot.py::test_no_location3",
|
43 |
-
"test_fewshot.py::test_no_location4",
|
44 |
-
"test_fewshot.py::test_parking_garage",
|
45 |
-
"test_fewshot.py::test_picture",
|
46 |
-
"test_fewshot.py::test_purple_house",
|
47 |
-
"test_fewshot.py::test_red_house",
|
48 |
-
"test_fewshot.py::test_snap_pic",
|
49 |
-
"test_fewshot.py::test_stop_flight",
|
50 |
-
"test_fewshot.py::test_stop_flight1",
|
51 |
-
"test_fewshot.py::test_take_off",
|
52 |
-
"test_fewshot.py::test_take_off_synonym",
|
53 |
-
"test_fewshot.py::test_two_go_to",
|
54 |
-
"test_fewshot.py::test_with_extra_words",
|
55 |
-
"test_fewshot.py::test_with_extra_words2"
|
56 |
]
|
|
|
1 |
[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
"test_chatgpt4uavs.py::test_red_house",
|
3 |
+
"test_fewshot.py::test_red_house"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
]
|
test/__pycache__/test_chatgpt4uavs.cpython-311-pytest-7.4.0.pyc
CHANGED
Binary files a/test/__pycache__/test_chatgpt4uavs.cpython-311-pytest-7.4.0.pyc and b/test/__pycache__/test_chatgpt4uavs.cpython-311-pytest-7.4.0.pyc differ
|
|
test/__pycache__/test_fewshot.cpython-311-pytest-7.4.0.pyc
CHANGED
Binary files a/test/__pycache__/test_fewshot.cpython-311-pytest-7.4.0.pyc and b/test/__pycache__/test_fewshot.cpython-311-pytest-7.4.0.pyc differ
|
|
test/test_fewshot.py
CHANGED
@@ -2,27 +2,27 @@ import pytest
|
|
2 |
import re
|
3 |
from fewshot import FewShot4UAVs
|
4 |
|
|
|
5 |
@pytest.fixture
|
6 |
def fewshot():
|
7 |
return FewShot4UAVs()
|
8 |
|
9 |
-
# format: <command> \t<goal>
|
10 |
|
11 |
-
#
|
12 |
def parse_command(text):
|
13 |
tokens = re.split(' \t|\n|: ', text.lower())
|
14 |
print(tokens)
|
15 |
-
if len(tokens) >= 2
|
16 |
-
return tokens[
|
17 |
else:
|
18 |
-
return '
|
|
|
19 |
|
20 |
-
# For testing sentences with multiple actions
|
21 |
def parse_multiple_commands(text):
|
22 |
text = text.lstrip('\n')
|
23 |
lines = text.split("\n")
|
24 |
-
first_action = lines[0].split()[
|
25 |
-
second_action = lines[1].split()[
|
26 |
return first_action, second_action
|
27 |
|
28 |
def test_red_house(fewshot):
|
@@ -31,6 +31,7 @@ def test_red_house(fewshot):
|
|
31 |
command = parse_command(output)
|
32 |
assert command == "goto"
|
33 |
|
|
|
34 |
def test_take_off(fewshot):
|
35 |
text = "Take off from where you are."
|
36 |
output = fewshot.get_command(text)
|
@@ -38,6 +39,13 @@ def test_take_off(fewshot):
|
|
38 |
assert command == "takeoff"
|
39 |
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
def test_land(fewshot):
|
42 |
text = "Land now."
|
43 |
output = fewshot.get_command(text)
|
@@ -49,20 +57,14 @@ def test_picture(fewshot):
|
|
49 |
text = "Take a picture."
|
50 |
output = fewshot.get_command(text)
|
51 |
command = parse_command(output)
|
52 |
-
assert command == "
|
53 |
|
54 |
-
# Testing actions using synonyms
|
55 |
-
def test_take_off_synonym(fewshot):
|
56 |
-
text = "Lift off."
|
57 |
-
output = fewshot.get_command(text)
|
58 |
-
command = parse_command(output)
|
59 |
-
assert command == "takeoff"
|
60 |
|
61 |
def test_snap_pic(fewshot):
|
62 |
text = "Snap a photo."
|
63 |
output = fewshot.get_command(text)
|
64 |
command = parse_command(output)
|
65 |
-
assert command == "
|
66 |
|
67 |
|
68 |
def test_purple_house(fewshot):
|
@@ -99,50 +101,49 @@ def test_stop_flight(fewshot):
|
|
99 |
command = parse_command(output)
|
100 |
assert command == "land"
|
101 |
|
102 |
-
|
103 |
def test_no_location1(fewshot):
|
104 |
text = "Check out."
|
105 |
output = fewshot.get_command(text)
|
106 |
command = parse_command(output)
|
107 |
-
assert command == "
|
108 |
|
109 |
|
110 |
def test_no_location2(fewshot):
|
111 |
text = "Go to."
|
112 |
output = fewshot.get_command(text)
|
113 |
command = parse_command(output)
|
114 |
-
assert command == "
|
115 |
|
116 |
|
117 |
def test_no_location3(fewshot):
|
118 |
text = "Travel to."
|
119 |
output = fewshot.get_command(text)
|
120 |
command = parse_command(output)
|
121 |
-
assert command == "
|
122 |
|
123 |
|
124 |
def test_no_location4(fewshot):
|
125 |
text = "Head to."
|
126 |
output = fewshot.get_command(text)
|
127 |
command = parse_command(output)
|
128 |
-
assert command == "
|
129 |
|
130 |
|
131 |
-
# Testing invalid commands
|
132 |
def test_empty_input(fewshot):
|
133 |
text = ""
|
134 |
output = fewshot.get_command(text)
|
135 |
command = parse_command(output)
|
136 |
-
assert command == "
|
137 |
|
138 |
|
139 |
def test_invalid_command(fewshot):
|
140 |
text = "Do something."
|
141 |
output = fewshot.get_command(text)
|
142 |
command = parse_command(output)
|
143 |
-
assert command == "
|
|
|
144 |
|
145 |
-
# Testing locations with no action specifically stated
|
146 |
def test_location_no_action(fewshot):
|
147 |
text = "Willow Lawn."
|
148 |
output = fewshot.get_command(text)
|
@@ -163,7 +164,7 @@ def test_location_no_action3(fewshot):
|
|
163 |
command = parse_command(output)
|
164 |
assert command == "goto"
|
165 |
|
166 |
-
|
167 |
def test_with_extra_words(fewshot):
|
168 |
text = "Please go to the Whole Foods on W Broad St."
|
169 |
output = fewshot.get_command(text)
|
@@ -176,46 +177,53 @@ def test_with_extra_words2(fewshot):
|
|
176 |
command = parse_command(output)
|
177 |
assert command == "goto"
|
178 |
|
179 |
-
|
180 |
-
def
|
181 |
-
text = "
|
182 |
output = fewshot.get_command(text)
|
183 |
command = parse_multiple_commands(output)
|
184 |
-
assert command == (
|
|
|
185 |
|
186 |
-
def
|
187 |
-
text = "
|
188 |
output = fewshot.get_command(text)
|
189 |
command = parse_multiple_commands(output)
|
190 |
-
assert command == (
|
|
|
191 |
|
192 |
-
def
|
193 |
-
text = "
|
194 |
output = fewshot.get_command(text)
|
195 |
command = parse_multiple_commands(output)
|
196 |
-
assert command == (
|
197 |
|
198 |
-
def
|
199 |
-
text = "
|
200 |
output = fewshot.get_command(text)
|
201 |
command = parse_multiple_commands(output)
|
202 |
-
assert command == (
|
203 |
|
204 |
-
def
|
205 |
-
text = "
|
206 |
output = fewshot.get_command(text)
|
207 |
command = parse_multiple_commands(output)
|
208 |
-
assert command == (
|
209 |
|
210 |
-
|
211 |
-
|
212 |
-
text = "Go to the maroon shack on Osborn Rd and then take a picture of Thomas Dale High School."
|
213 |
output = fewshot.get_command(text)
|
214 |
command = parse_multiple_commands(output)
|
215 |
-
assert command == (
|
216 |
-
|
217 |
-
def
|
218 |
-
text = "
|
219 |
output = fewshot.get_command(text)
|
220 |
command = parse_multiple_commands(output)
|
221 |
-
assert command == (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
import re
|
3 |
from fewshot import FewShot4UAVs
|
4 |
|
5 |
+
|
6 |
@pytest.fixture
|
7 |
def fewshot():
|
8 |
return FewShot4UAVs()
|
9 |
|
|
|
10 |
|
11 |
+
# format: <command> \t<goal>
|
12 |
def parse_command(text):
|
13 |
tokens = re.split(' \t|\n|: ', text.lower())
|
14 |
print(tokens)
|
15 |
+
if len(tokens) >= 2:
|
16 |
+
return tokens[1]
|
17 |
else:
|
18 |
+
return 'none'
|
19 |
+
|
20 |
|
|
|
21 |
def parse_multiple_commands(text):
|
22 |
text = text.lstrip('\n')
|
23 |
lines = text.split("\n")
|
24 |
+
first_action = lines[0].split()[0].lower()
|
25 |
+
second_action = lines[1].split()[0].lower()
|
26 |
return first_action, second_action
|
27 |
|
28 |
def test_red_house(fewshot):
|
|
|
31 |
command = parse_command(output)
|
32 |
assert command == "goto"
|
33 |
|
34 |
+
|
35 |
def test_take_off(fewshot):
|
36 |
text = "Take off from where you are."
|
37 |
output = fewshot.get_command(text)
|
|
|
39 |
assert command == "takeoff"
|
40 |
|
41 |
|
42 |
+
def test_take_off_synonym(fewshot):
|
43 |
+
text = "Lift off."
|
44 |
+
output = fewshot.get_command(text)
|
45 |
+
command = parse_command(output)
|
46 |
+
assert command == "takeoff"
|
47 |
+
|
48 |
+
|
49 |
def test_land(fewshot):
|
50 |
text = "Land now."
|
51 |
output = fewshot.get_command(text)
|
|
|
57 |
text = "Take a picture."
|
58 |
output = fewshot.get_command(text)
|
59 |
command = parse_command(output)
|
60 |
+
assert command == "none"
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
|
63 |
def test_snap_pic(fewshot):
|
64 |
text = "Snap a photo."
|
65 |
output = fewshot.get_command(text)
|
66 |
command = parse_command(output)
|
67 |
+
assert command == "none"
|
68 |
|
69 |
|
70 |
def test_purple_house(fewshot):
|
|
|
101 |
command = parse_command(output)
|
102 |
assert command == "land"
|
103 |
|
104 |
+
|
105 |
def test_no_location1(fewshot):
|
106 |
text = "Check out."
|
107 |
output = fewshot.get_command(text)
|
108 |
command = parse_command(output)
|
109 |
+
assert command == "none"
|
110 |
|
111 |
|
112 |
def test_no_location2(fewshot):
|
113 |
text = "Go to."
|
114 |
output = fewshot.get_command(text)
|
115 |
command = parse_command(output)
|
116 |
+
assert command == "none"
|
117 |
|
118 |
|
119 |
def test_no_location3(fewshot):
|
120 |
text = "Travel to."
|
121 |
output = fewshot.get_command(text)
|
122 |
command = parse_command(output)
|
123 |
+
assert command == "none"
|
124 |
|
125 |
|
126 |
def test_no_location4(fewshot):
|
127 |
text = "Head to."
|
128 |
output = fewshot.get_command(text)
|
129 |
command = parse_command(output)
|
130 |
+
assert command == "none"
|
131 |
|
132 |
|
|
|
133 |
def test_empty_input(fewshot):
|
134 |
text = ""
|
135 |
output = fewshot.get_command(text)
|
136 |
command = parse_command(output)
|
137 |
+
assert command == "none"
|
138 |
|
139 |
|
140 |
def test_invalid_command(fewshot):
|
141 |
text = "Do something."
|
142 |
output = fewshot.get_command(text)
|
143 |
command = parse_command(output)
|
144 |
+
assert command == "none"
|
145 |
+
|
146 |
|
|
|
147 |
def test_location_no_action(fewshot):
|
148 |
text = "Willow Lawn."
|
149 |
output = fewshot.get_command(text)
|
|
|
164 |
command = parse_command(output)
|
165 |
assert command == "goto"
|
166 |
|
167 |
+
|
168 |
def test_with_extra_words(fewshot):
|
169 |
text = "Please go to the Whole Foods on W Broad St."
|
170 |
output = fewshot.get_command(text)
|
|
|
177 |
command = parse_command(output)
|
178 |
assert command == "goto"
|
179 |
|
180 |
+
|
181 |
+
def test_multiple_actions(fewshot):
|
182 |
+
text = "Take a photo and then take off."
|
183 |
output = fewshot.get_command(text)
|
184 |
command = parse_multiple_commands(output)
|
185 |
+
assert command == ('takephoto', 'takeoff')
|
186 |
+
|
187 |
|
188 |
+
def test_two_go_to(fewshot):
|
189 |
+
text = "Go to the Kroger on Lombardy St and then go to Roots on W Grace St."
|
190 |
output = fewshot.get_command(text)
|
191 |
command = parse_multiple_commands(output)
|
192 |
+
assert command == ('goto', 'goto')
|
193 |
+
|
194 |
|
195 |
+
def test_multiple_actions_and_locations(fewshot):
|
196 |
+
text = "Fly to the park and take a picture of the red house."
|
197 |
output = fewshot.get_command(text)
|
198 |
command = parse_multiple_commands(output)
|
199 |
+
assert command == ('goto', 'takephoto')
|
200 |
|
201 |
+
def test_action_and_location(fewshot):
|
202 |
+
text = "Fly to the park and take a picture."
|
203 |
output = fewshot.get_command(text)
|
204 |
command = parse_multiple_commands(output)
|
205 |
+
assert command == ('goto', 'takephoto')
|
206 |
|
207 |
+
def test_action_and_location_synonyms(fewshot):
|
208 |
+
text = "Hover and head to the closest park."
|
209 |
output = fewshot.get_command(text)
|
210 |
command = parse_multiple_commands(output)
|
211 |
+
assert command == ('takeoff', 'goto')
|
212 |
|
213 |
+
def test_action_synonyms(fewshot):
|
214 |
+
text = "Ascend and then take a photo."
|
|
|
215 |
output = fewshot.get_command(text)
|
216 |
command = parse_multiple_commands(output)
|
217 |
+
assert command == ('takeoff', 'takephoto')
|
218 |
+
|
219 |
+
def test_action_synonyms2(fewshot):
|
220 |
+
text = "Descend and then take a photo."
|
221 |
output = fewshot.get_command(text)
|
222 |
command = parse_multiple_commands(output)
|
223 |
+
assert command == ('land', 'takephoto')
|
224 |
+
|
225 |
+
def test_action_synonyms3(fewshot):
|
226 |
+
text = "Descend"
|
227 |
+
output = fewshot.get_command(text)
|
228 |
+
command = parse_command(output)
|
229 |
+
assert command == 'land'
|
uav_api.py
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from flask import Flask, jsonify, request
|
2 |
+
from flask_restful import Resource, Api
|
3 |
+
import requests
|
4 |
+
from gradio_client import Client
|
5 |
+
|
6 |
+
app = Flask(__name__)
|
7 |
+
api = Api(app)
|
8 |
+
|
9 |
+
|
10 |
+
def get_latest_command():
|
11 |
+
client = Client("http://127.0.0.1:7860")
|
12 |
+
result = client.predict(
|
13 |
+
"https://github.com/gradio-app/gradio/raw/main/test/test_files/audio_sample.wav",
|
14 |
+
api_name="/record"
|
15 |
+
)
|
16 |
+
lines = result.split('\n')
|
17 |
+
command = None
|
18 |
+
for line in lines:
|
19 |
+
if "UAV:" in line:
|
20 |
+
command = line.split("UAV:", 1)[-1].strip()
|
21 |
+
break
|
22 |
+
return command
|
23 |
+
|
24 |
+
|
25 |
+
def send_command_to_uav_controller(command):
|
26 |
+
url = "http://localhost:8080" # replace with address for UAV's C++ code later
|
27 |
+
data = {"command": command}
|
28 |
+
response = requests.post(url, json=data)
|
29 |
+
return response.text
|
30 |
+
|
31 |
+
|
32 |
+
class Command(Resource):
|
33 |
+
def get(self):
|
34 |
+
latest_command = get_latest_command()
|
35 |
+
return jsonify({"latest_command": latest_command})
|
36 |
+
|
37 |
+
def post(self):
|
38 |
+
latest_command = get_latest_command()
|
39 |
+
if latest_command:
|
40 |
+
response = send_command_to_uav_controller(latest_command)
|
41 |
+
return jsonify({"status": "Command sent to UAV controller.", "response": response}), 200
|
42 |
+
else:
|
43 |
+
return jsonify({"status": "No command available."}), 404
|
44 |
+
|
45 |
+
def put(self):
|
46 |
+
pass
|
47 |
+
|
48 |
+
def delete(self):
|
49 |
+
pass
|
50 |
+
|
51 |
+
|
52 |
+
api.add_resource(Command, '/command')
|
53 |
+
|
54 |
+
if __name__ == '__main__':
|
55 |
+
app.run(debug=True)
|