|
2 | 2 | "cells": [
|
3 | 3 | {
|
4 | 4 | "cell_type": "code",
|
| 5 | + "execution_count": null, |
5 | 6 | "id": "initial_id",
|
6 | 7 | "metadata": {
|
7 | 8 | "collapsed": true
|
8 | 9 | },
|
| 10 | + "outputs": [], |
9 | 11 | "source": [
|
10 | 12 | "import time\n",
|
11 | 13 | "import taskingai\n",
|
12 | 14 | "# Load TaskingAI API Key from environment variable"
|
13 |
| - ], |
14 |
| - "outputs": [], |
15 |
| - "execution_count": null |
| 15 | + ] |
16 | 16 | },
|
17 | 17 | {
|
18 | 18 | "cell_type": "markdown",
|
| 19 | + "id": "4ca20b4a868dedd8", |
| 20 | + "metadata": { |
| 21 | + "collapsed": false |
| 22 | + }, |
19 | 23 | "source": [
|
20 | 24 | "# TaskingAI: Chat with Assistant Example\n",
|
21 | 25 | "\n",
|
22 | 26 | "In this example, we will first create an assistant who knows the meaning of various numbers and will explain it in certain language.\n",
|
23 | 27 | "Then we will start a chat with the assistant."
|
24 |
| - ], |
25 |
| - "metadata": { |
26 |
| - "collapsed": false |
27 |
| - }, |
28 |
| - "id": "4ca20b4a868dedd8" |
| 28 | + ] |
29 | 29 | },
|
30 | 30 | {
|
31 | 31 | "cell_type": "markdown",
|
32 |
| - "source": [ |
33 |
| - "## Create Assistant" |
34 |
| - ], |
| 32 | + "id": "5e19ac923d84e898", |
35 | 33 | "metadata": {
|
36 | 34 | "collapsed": false
|
37 | 35 | },
|
38 |
| - "id": "5e19ac923d84e898" |
| 36 | + "source": [ |
| 37 | + "## Create Assistant" |
| 38 | + ] |
39 | 39 | },
|
40 | 40 | {
|
41 | 41 | "cell_type": "code",
|
42 |
| - "source": [ |
43 |
| - "from taskingai.tool import Action, ActionAuthentication, ActionAuthenticationType\n", |
44 |
| - "from typing import List\n", |
45 |
| - "\n", |
46 |
| - "# create an assistant action\n", |
47 |
| - "NUMBERS_API_SCHEMA = {\n", |
48 |
| - " \"openapi\": \"3.0.0\",\n", |
49 |
| - " \"info\": {\n", |
50 |
| - " \"title\": \"Numbers API\",\n", |
51 |
| - " \"version\": \"1.0.0\",\n", |
52 |
| - " \"description\": \"API for fetching interesting number facts\"\n", |
53 |
| - " },\n", |
54 |
| - " \"servers\": [\n", |
55 |
| - " {\n", |
56 |
| - " \"url\": \"http://numbersapi.com\"\n", |
57 |
| - " }\n", |
58 |
| - " ],\n", |
59 |
| - " \"paths\": {\n", |
60 |
| - " \"/{number}\": {\n", |
61 |
| - " \"get\": {\n", |
62 |
| - " \"description\": \"Get a fact about a number\",\n", |
63 |
| - " \"operationId\": \"getNumberFact\",\n", |
64 |
| - " \"parameters\": [\n", |
65 |
| - " {\n", |
66 |
| - " \"name\": \"number\",\n", |
67 |
| - " \"in\": \"path\",\n", |
68 |
| - " \"required\": True,\n", |
69 |
| - " \"description\": \"The number to get the fact for\",\n", |
70 |
| - " \"schema\": {\n", |
71 |
| - " \"type\": \"integer\"\n", |
72 |
| - " }\n", |
73 |
| - " }\n", |
74 |
| - " ],\n", |
75 |
| - " \"responses\": {\n", |
76 |
| - " \"200\": {\n", |
77 |
| - " \"description\": \"A fact about the number\",\n", |
78 |
| - " \"content\": {\n", |
79 |
| - " \"text/plain\": {\n", |
80 |
| - " \"schema\": {\n", |
81 |
| - " \"type\": \"string\"\n", |
82 |
| - " }\n", |
83 |
| - " }\n", |
84 |
| - " }\n", |
85 |
| - " }\n", |
86 |
| - " }\n", |
87 |
| - " }\n", |
88 |
| - " }\n", |
89 |
| - " }\n", |
90 |
| - "}\n", |
91 |
| - "actions: List[Action] = taskingai.tool.bulk_create_actions(\n", |
92 |
| - " openapi_schema=NUMBERS_API_SCHEMA,\n", |
93 |
| - " authentication=ActionAuthentication(\n", |
94 |
| - " type=ActionAuthenticationType.NONE,\n", |
95 |
| - " )\n", |
96 |
| - ")\n", |
97 |
| - "action = actions[0]\n", |
98 |
| - "print(f\"created action: {action}\\n\")" |
99 |
| - ], |
| 42 | + "execution_count": null, |
| 43 | + "id": "3b3df0f232021283", |
100 | 44 | "metadata": {
|
101 | 45 | "collapsed": false
|
102 | 46 | },
|
103 |
| - "id": "3b2fda39ba58c5e9", |
104 | 47 | "outputs": [],
|
105 |
| - "execution_count": null |
106 |
| - }, |
107 |
| - { |
108 |
| - "cell_type": "code", |
109 | 48 | "source": [
|
110 | 49 | "from taskingai.assistant import Assistant, Chat, ToolRef, ToolType\n",
|
111 | 50 | "from taskingai.assistant.memory import AssistantMessageWindowMemory\n",
|
|
127 | 66 | " ],\n",
|
128 | 67 | " tools=[\n",
|
129 | 68 | " ToolRef(\n",
|
130 |
| - " type=ToolType.ACTION,\n", |
131 |
| - " id=action.action_id,\n", |
| 69 | + " type=ToolType.PLUGIN,\n", |
| 70 | + " id=\"open_weather/get_hourly_forecast\",\n", |
132 | 71 | " )\n",
|
133 | 72 | " ],\n",
|
134 | 73 | " retrievals=[],\n",
|
135 | 74 | " metadata={\"k\": \"v\"},\n",
|
136 | 75 | ")\n",
|
137 | 76 | "print(f\"created assistant: {assistant}\\n\")"
|
138 |
| - ], |
139 |
| - "metadata": { |
140 |
| - "collapsed": false |
141 |
| - }, |
142 |
| - "id": "3b3df0f232021283", |
143 |
| - "outputs": [], |
144 |
| - "execution_count": null |
| 77 | + ] |
145 | 78 | },
|
146 | 79 | {
|
147 | 80 | "cell_type": "markdown",
|
148 |
| - "source": [ |
149 |
| - "## Start a Chat " |
150 |
| - ], |
| 81 | + "id": "8e7c1b9461f0a344", |
151 | 82 | "metadata": {
|
152 | 83 | "collapsed": false
|
153 | 84 | },
|
154 |
| - "id": "8e7c1b9461f0a344" |
| 85 | + "source": [ |
| 86 | + "## Start a Chat " |
| 87 | + ] |
155 | 88 | },
|
156 | 89 | {
|
157 | 90 | "cell_type": "code",
|
| 91 | + "execution_count": null, |
| 92 | + "id": "f1e2f0b2af8b1d8d", |
| 93 | + "metadata": { |
| 94 | + "collapsed": false |
| 95 | + }, |
| 96 | + "outputs": [], |
158 | 97 | "source": [
|
159 | 98 | "chat: Chat = taskingai.assistant.create_chat(\n",
|
160 | 99 | " assistant_id=assistant.assistant_id,\n",
|
161 | 100 | ")\n",
|
162 | 101 | "print(f\"created chat: {chat.chat_id}\\n\")"
|
163 |
| - ], |
| 102 | + ] |
| 103 | + }, |
| 104 | + { |
| 105 | + "cell_type": "code", |
| 106 | + "execution_count": null, |
| 107 | + "id": "b26e30b79b71697a", |
164 | 108 | "metadata": {
|
165 | 109 | "collapsed": false
|
166 | 110 | },
|
167 |
| - "id": "f1e2f0b2af8b1d8d", |
168 | 111 | "outputs": [],
|
169 |
| - "execution_count": null |
170 |
| - }, |
171 |
| - { |
172 |
| - "cell_type": "code", |
173 | 112 | "source": [
|
174 | 113 | "from taskingai.assistant import Message, MessageChunk\n",
|
175 | 114 | "user_input = input(\"User Input: \")\n",
|
|
181 | 120 | " text=user_input,\n",
|
182 | 121 | " )\n",
|
183 | 122 | " print(f\"User: {user_input}\")\n",
|
184 |
| - " \n", |
| 123 | + "\n", |
185 | 124 | " # generate assistant response\n",
|
186 | 125 | " assistant_message: Message = taskingai.assistant.generate_message(\n",
|
187 | 126 | " assistant_id=assistant.assistant_id,\n",
|
|
194 | 133 | " time.sleep(2)\n",
|
195 | 134 | " # quit by input 'q\n",
|
196 | 135 | " user_input = input(\"User: \")"
|
197 |
| - ], |
| 136 | + ] |
| 137 | + }, |
| 138 | + { |
| 139 | + "cell_type": "code", |
| 140 | + "execution_count": null, |
| 141 | + "id": "c7d73e0b138e3eba", |
198 | 142 | "metadata": {
|
199 | 143 | "collapsed": false
|
200 | 144 | },
|
201 |
| - "id": "b26e30b79b71697a", |
202 | 145 | "outputs": [],
|
203 |
| - "execution_count": null |
204 |
| - }, |
205 |
| - { |
206 |
| - "cell_type": "code", |
207 | 146 | "source": [
|
208 | 147 | "user_input = input(\"User Input: \")\n",
|
209 | 148 | "while user_input.strip() and user_input != \"q\":\n",
|
|
214 | 153 | " text=user_input,\n",
|
215 | 154 | " )\n",
|
216 | 155 | " print(f\"User: {user_input} ({user_message.message_id})\")\n",
|
217 |
| - " \n", |
| 156 | + "\n", |
218 | 157 | " # generate assistant response\n",
|
219 | 158 | " assistant_message_response = taskingai.assistant.generate_message(\n",
|
220 | 159 | " assistant_id=assistant.assistant_id,\n",
|
|
224 | 163 | " },\n",
|
225 | 164 | " stream=True,\n",
|
226 | 165 | " )\n",
|
227 |
| - " \n", |
| 166 | + "\n", |
228 | 167 | " print(f\"Assistant:\", end=\" \", flush=True)\n",
|
229 | 168 | " for item in assistant_message_response:\n",
|
230 | 169 | " if isinstance(item, MessageChunk):\n",
|
231 | 170 | " print(item.delta, end=\"\", flush=True)\n",
|
232 | 171 | " elif isinstance(item, Message):\n",
|
233 | 172 | " print(f\" ({item.message_id})\")\n",
|
234 |
| - " \n", |
| 173 | + "\n", |
235 | 174 | " time.sleep(2)\n",
|
236 | 175 | " # quit by input 'q\n",
|
237 | 176 | " user_input = input(\"User: \")"
|
238 |
| - ], |
| 177 | + ] |
| 178 | + }, |
| 179 | + { |
| 180 | + "cell_type": "code", |
| 181 | + "execution_count": null, |
| 182 | + "id": "e94e3adb0d15373b", |
239 | 183 | "metadata": {
|
240 | 184 | "collapsed": false
|
241 | 185 | },
|
242 |
| - "id": "c7d73e0b138e3eba", |
243 | 186 | "outputs": [],
|
244 |
| - "execution_count": null |
245 |
| - }, |
246 |
| - { |
247 |
| - "cell_type": "code", |
248 | 187 | "source": [
|
249 | 188 | "# list messages\n",
|
250 | 189 | "messages = taskingai.assistant.list_messages(\n",
|
|
254 | 193 | ")\n",
|
255 | 194 | "for message in messages:\n",
|
256 | 195 | " print(f\"{message.role}: {message.content.text}\")"
|
257 |
| - ], |
| 196 | + ] |
| 197 | + }, |
| 198 | + { |
| 199 | + "cell_type": "code", |
| 200 | + "execution_count": null, |
| 201 | + "id": "ed39836bbfdc7a4e", |
258 | 202 | "metadata": {
|
259 | 203 | "collapsed": false
|
260 | 204 | },
|
261 |
| - "id": "e94e3adb0d15373b", |
262 | 205 | "outputs": [],
|
263 |
| - "execution_count": null |
264 |
| - }, |
265 |
| - { |
266 |
| - "cell_type": "code", |
267 | 206 | "source": [
|
268 | 207 | "# delete assistant\n",
|
269 | 208 | "taskingai.assistant.delete_assistant(\n",
|
270 | 209 | " assistant_id=assistant.assistant_id,\n",
|
271 | 210 | ")"
|
272 |
| - ], |
273 |
| - "metadata": { |
274 |
| - "collapsed": false |
275 |
| - }, |
276 |
| - "id": "ed39836bbfdc7a4e", |
| 211 | + ] |
| 212 | + }, |
| 213 | + { |
| 214 | + "cell_type": "code", |
| 215 | + "execution_count": null, |
| 216 | + "id": "3a67261c", |
| 217 | + "metadata": {}, |
277 | 218 | "outputs": [],
|
278 |
| - "execution_count": null |
| 219 | + "source": [ |
| 220 | + "# clean chat context\n", |
| 221 | + "taskingai.assistant.clean_chat_context(\n", |
| 222 | + " assistant_id=\"YOUR_ASSISTANT_ID\",\n", |
| 223 | + " chat_id=\"YOUR_CHAT_ID\",\n", |
| 224 | + ")" |
| 225 | + ] |
279 | 226 | }
|
280 | 227 | ],
|
281 | 228 | "metadata": {
|
|
294 | 241 | "name": "python",
|
295 | 242 | "nbconvert_exporter": "python",
|
296 | 243 | "pygments_lexer": "ipython2",
|
297 |
| - "version": "2.7.6" |
| 244 | + "version": "3.10.14" |
298 | 245 | }
|
299 | 246 | },
|
300 | 247 | "nbformat": 4,
|
|
0 commit comments