Af/update cookbook lauch 4o mini (#1292)

aa-salesforce-cookbook-final
arnaud-openai 2 months ago committed by GitHub
parent c0fbef76c8
commit 1491eaed41
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

File diff suppressed because one or more lines are too long

@ -39,7 +39,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@ -62,16 +62,16 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Full response received 5.27 seconds after request\n",
"Full response received 1.88 seconds after request\n",
"Full response received:\n",
"ChatCompletion(id='chatcmpl-8ZB8ywkV5DuuJO7xktqUcNYfG8j6I', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='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.', role='assistant', function_call=None, tool_calls=None))], created=1703395008, model='gpt-3.5-turbo-0613', object='chat.completion', system_fingerprint=None, usage=CompletionUsage(completion_tokens=299, prompt_tokens=36, total_tokens=335))\n"
"ChatCompletion(id='chatcmpl-9lMgdoiMfxVHPDNVCtvXuTWcQ2GGb', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='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', role='assistant', function_call=None, tool_calls=None))], created=1721075651, model='gpt-july-test', object='chat.completion', system_fingerprint='fp_e9b8ed65d2', usage=CompletionUsage(completion_tokens=298, prompt_tokens=36, total_tokens=334))\n"
]
}
],
@ -84,7 +84,7 @@
"\n",
"# send a ChatCompletion request to count to 100\n",
"response = client.chat.completions.create(\n",
" model='gpt-3.5-turbo',\n",
" model='gpt-4o-mini',\n",
" messages=[\n",
" {'role': 'user', 'content': 'Count to 100, with a comma between each number and no newlines. E.g., 1, 2, 3, ...'}\n",
" ],\n",
@ -110,7 +110,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 4,
"metadata": {},
"outputs": [
{
@ -118,9 +118,9 @@
"output_type": "stream",
"text": [
"Extracted reply: \n",
"ChatCompletionMessage(content='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.', role='assistant', function_call=None, tool_calls=None)\n",
"ChatCompletionMessage(content='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', role='assistant', function_call=None, tool_calls=None)\n",
"Extracted content: \n",
"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.\n"
"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\n"
]
}
],
@ -146,20 +146,23 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ChatCompletionChunk(id='chatcmpl-8ZB9m2Ubv8FJs3CIb84WvYwqZCHST', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1703395058, model='gpt-3.5-turbo-0613', object='chat.completion.chunk', system_fingerprint=None)\n",
"ChatCompletionChunk(id='chatcmpl-9lMgfRSWPHcw51s6wxKT1YEO2CKpd', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1721075653, model='gpt-july-test', object='chat.completion.chunk', system_fingerprint='fp_e9b8ed65d2', usage=None)\n",
"\n",
"****************\n",
"ChatCompletionChunk(id='chatcmpl-8ZB9m2Ubv8FJs3CIb84WvYwqZCHST', choices=[Choice(delta=ChoiceDelta(content='2', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1703395058, model='gpt-3.5-turbo-0613', object='chat.completion.chunk', system_fingerprint=None)\n",
"2\n",
"ChatCompletionChunk(id='chatcmpl-9lMgfRSWPHcw51s6wxKT1YEO2CKpd', choices=[Choice(delta=ChoiceDelta(content='Two', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1721075653, model='gpt-july-test', object='chat.completion.chunk', system_fingerprint='fp_e9b8ed65d2', usage=None)\n",
"Two\n",
"****************\n",
"ChatCompletionChunk(id='chatcmpl-8ZB9m2Ubv8FJs3CIb84WvYwqZCHST', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None), finish_reason='stop', index=0, logprobs=None)], created=1703395058, model='gpt-3.5-turbo-0613', object='chat.completion.chunk', system_fingerprint=None)\n",
"ChatCompletionChunk(id='chatcmpl-9lMgfRSWPHcw51s6wxKT1YEO2CKpd', choices=[Choice(delta=ChoiceDelta(content='.', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1721075653, model='gpt-july-test', object='chat.completion.chunk', system_fingerprint='fp_e9b8ed65d2', usage=None)\n",
".\n",
"****************\n",
"ChatCompletionChunk(id='chatcmpl-9lMgfRSWPHcw51s6wxKT1YEO2CKpd', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None), finish_reason='stop', index=0, logprobs=None)], created=1721075653, model='gpt-july-test', object='chat.completion.chunk', system_fingerprint='fp_e9b8ed65d2', usage=None)\n",
"None\n",
"****************\n"
]
@ -171,7 +174,7 @@
"\n",
"# a ChatCompletion request\n",
"response = client.chat.completions.create(\n",
" model='gpt-3.5-turbo',\n",
" model='gpt-4o-mini',\n",
" messages=[\n",
" {'role': 'user', 'content': \"What's 1+1? Answer in one word.\"}\n",
" ],\n",
@ -203,321 +206,320 @@
"source": [
"### 3. How much time is saved by streaming a chat completion\n",
"\n",
"Now let's ask `gpt-3.5-turbo` to count to 100 again, and see how long it takes."
"Now let's ask `gpt-4o-mini` to count to 100 again, and see how long it takes."
]
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Message received 0.31 seconds after request: \n",
"Message received 0.31 seconds after request: 1\n",
"Message received 0.34 seconds after request: ,\n",
"Message received 0.34 seconds after request: \n",
"Message received 0.34 seconds after request: 2\n",
"Message received 0.39 seconds after request: ,\n",
"Message received 0.39 seconds after request: \n",
"Message received 0.39 seconds after request: 3\n",
"Message received 0.42 seconds after request: ,\n",
"Message received 0.42 seconds after request: \n",
"Message received 0.42 seconds after request: 4\n",
"Message received 0.47 seconds after request: ,\n",
"Message received 0.47 seconds after request: \n",
"Message received 0.47 seconds after request: 5\n",
"Message received 0.51 seconds after request: ,\n",
"Message received 0.51 seconds after request: \n",
"Message received 0.51 seconds after request: 6\n",
"Message received 0.55 seconds after request: ,\n",
"Message received 0.55 seconds after request: \n",
"Message received 0.55 seconds after request: 7\n",
"Message received 0.59 seconds after request: ,\n",
"Message received 0.59 seconds after request: \n",
"Message received 0.59 seconds after request: 8\n",
"Message received 0.63 seconds after request: ,\n",
"Message received 0.63 seconds after request: \n",
"Message received 0.63 seconds after request: 9\n",
"Message received 0.67 seconds after request: ,\n",
"Message received 0.67 seconds after request: \n",
"Message received 0.67 seconds after request: 10\n",
"Message received 0.71 seconds after request: ,\n",
"Message received 0.71 seconds after request: \n",
"Message received 0.71 seconds after request: 11\n",
"Message received 0.75 seconds after request: ,\n",
"Message received 0.75 seconds after request: \n",
"Message received 0.75 seconds after request: 12\n",
"Message received 0.98 seconds after request: ,\n",
"Message received 0.98 seconds after request: \n",
"Message received 0.98 seconds after request: 13\n",
"Message received 1.02 seconds after request: ,\n",
"Message received 1.02 seconds after request: \n",
"Message received 1.02 seconds after request: 14\n",
"Message received 1.04 seconds after request: ,\n",
"Message received 1.04 seconds after request: \n",
"Message received 1.04 seconds after request: 15\n",
"Message received 1.08 seconds after request: ,\n",
"Message received 1.08 seconds after request: \n",
"Message received 1.08 seconds after request: 16\n",
"Message received 1.12 seconds after request: ,\n",
"Message received 1.12 seconds after request: \n",
"Message received 1.12 seconds after request: 17\n",
"Message received 1.14 seconds after request: \n",
"Message received 1.14 seconds after request: 1\n",
"Message received 1.14 seconds after request: ,\n",
"Message received 1.14 seconds after request: \n",
"Message received 1.14 seconds after request: 2\n",
"Message received 1.16 seconds after request: ,\n",
"Message received 1.16 seconds after request: \n",
"Message received 1.16 seconds after request: 18\n",
"Message received 1.19 seconds after request: ,\n",
"Message received 1.19 seconds after request: \n",
"Message received 1.19 seconds after request: 19\n",
"Message received 1.23 seconds after request: ,\n",
"Message received 1.23 seconds after request: \n",
"Message received 1.23 seconds after request: 20\n",
"Message received 1.27 seconds after request: ,\n",
"Message received 1.27 seconds after request: \n",
"Message received 1.27 seconds after request: 21\n",
"Message received 1.31 seconds after request: ,\n",
"Message received 1.31 seconds after request: \n",
"Message received 1.31 seconds after request: 22\n",
"Message received 1.16 seconds after request: 3\n",
"Message received 1.35 seconds after request: ,\n",
"Message received 1.35 seconds after request: \n",
"Message received 1.35 seconds after request: 23\n",
"Message received 1.39 seconds after request: ,\n",
"Message received 1.39 seconds after request: \n",
"Message received 1.39 seconds after request: 24\n",
"Message received 1.43 seconds after request: ,\n",
"Message received 1.43 seconds after request: \n",
"Message received 1.43 seconds after request: 25\n",
"Message received 1.35 seconds after request: 4\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 5\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 6\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 7\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 8\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 9\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 10\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 11\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.36 seconds after request: 12\n",
"Message received 1.36 seconds after request: ,\n",
"Message received 1.36 seconds after request: \n",
"Message received 1.45 seconds after request: 13\n",
"Message received 1.45 seconds after request: ,\n",
"Message received 1.45 seconds after request: \n",
"Message received 1.45 seconds after request: 14\n",
"Message received 1.45 seconds after request: ,\n",
"Message received 1.45 seconds after request: \n",
"Message received 1.45 seconds after request: 15\n",
"Message received 1.45 seconds after request: ,\n",
"Message received 1.45 seconds after request: \n",
"Message received 1.46 seconds after request: 16\n",
"Message received 1.46 seconds after request: ,\n",
"Message received 1.46 seconds after request: \n",
"Message received 1.47 seconds after request: 17\n",
"Message received 1.47 seconds after request: ,\n",
"Message received 1.47 seconds after request: \n",
"Message received 1.47 seconds after request: 26\n",
"Message received 1.51 seconds after request: ,\n",
"Message received 1.51 seconds after request: \n",
"Message received 1.51 seconds after request: 27\n",
"Message received 1.49 seconds after request: 18\n",
"Message received 1.49 seconds after request: ,\n",
"Message received 1.49 seconds after request: \n",
"Message received 1.52 seconds after request: 19\n",
"Message received 1.52 seconds after request: ,\n",
"Message received 1.52 seconds after request: \n",
"Message received 1.53 seconds after request: 20\n",
"Message received 1.53 seconds after request: ,\n",
"Message received 1.53 seconds after request: \n",
"Message received 1.55 seconds after request: 21\n",
"Message received 1.55 seconds after request: ,\n",
"Message received 1.55 seconds after request: \n",
"Message received 1.55 seconds after request: 28\n",
"Message received 1.56 seconds after request: 22\n",
"Message received 1.56 seconds after request: ,\n",
"Message received 1.56 seconds after request: \n",
"Message received 1.58 seconds after request: 23\n",
"Message received 1.58 seconds after request: ,\n",
"Message received 1.58 seconds after request: \n",
"Message received 1.59 seconds after request: 24\n",
"Message received 1.59 seconds after request: ,\n",
"Message received 1.59 seconds after request: \n",
"Message received 1.59 seconds after request: 29\n",
"Message received 1.59 seconds after request: ,\n",
"Message received 1.59 seconds after request: \n",
"Message received 1.59 seconds after request: 30\n",
"Message received 1.59 seconds after request: ,\n",
"Message received 1.59 seconds after request: \n",
"Message received 1.59 seconds after request: 31\n",
"Message received 1.59 seconds after request: ,\n",
"Message received 1.59 seconds after request: \n",
"Message received 1.60 seconds after request: 32\n",
"Message received 1.60 seconds after request: ,\n",
"Message received 1.60 seconds after request: \n",
"Message received 1.60 seconds after request: 33\n",
"Message received 1.60 seconds after request: ,\n",
"Message received 1.60 seconds after request: \n",
"Message received 1.67 seconds after request: 34\n",
"Message received 1.62 seconds after request: 25\n",
"Message received 1.62 seconds after request: ,\n",
"Message received 1.62 seconds after request: \n",
"Message received 1.62 seconds after request: 26\n",
"Message received 1.62 seconds after request: ,\n",
"Message received 1.62 seconds after request: \n",
"Message received 1.65 seconds after request: 27\n",
"Message received 1.65 seconds after request: ,\n",
"Message received 1.65 seconds after request: \n",
"Message received 1.67 seconds after request: 28\n",
"Message received 1.67 seconds after request: ,\n",
"Message received 1.67 seconds after request: \n",
"Message received 1.68 seconds after request: 35\n",
"Message received 1.68 seconds after request: ,\n",
"Message received 1.68 seconds after request: \n",
"Message received 1.86 seconds after request: 36\n",
"Message received 1.86 seconds after request: ,\n",
"Message received 1.86 seconds after request: \n",
"Message received 1.90 seconds after request: 37\n",
"Message received 1.90 seconds after request: ,\n",
"Message received 1.90 seconds after request: \n",
"Message received 1.94 seconds after request: 38\n",
"Message received 1.94 seconds after request: ,\n",
"Message received 1.94 seconds after request: \n",
"Message received 1.98 seconds after request: 39\n",
"Message received 1.98 seconds after request: ,\n",
"Message received 1.98 seconds after request: \n",
"Message received 2.05 seconds after request: 40\n",
"Message received 2.05 seconds after request: ,\n",
"Message received 2.05 seconds after request: \n",
"Message received 2.09 seconds after request: 41\n",
"Message received 2.09 seconds after request: ,\n",
"Message received 2.09 seconds after request: \n",
"Message received 2.14 seconds after request: 42\n",
"Message received 2.14 seconds after request: ,\n",
"Message received 2.14 seconds after request: \n",
"Message received 2.14 seconds after request: 43\n",
"Message received 1.69 seconds after request: 29\n",
"Message received 1.69 seconds after request: ,\n",
"Message received 1.69 seconds after request: \n",
"Message received 1.80 seconds after request: 30\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.80 seconds after request: 31\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.80 seconds after request: 32\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.80 seconds after request: 33\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.80 seconds after request: 34\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.80 seconds after request: 35\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.80 seconds after request: 36\n",
"Message received 1.80 seconds after request: ,\n",
"Message received 1.80 seconds after request: \n",
"Message received 1.82 seconds after request: 37\n",
"Message received 1.82 seconds after request: ,\n",
"Message received 1.82 seconds after request: \n",
"Message received 1.83 seconds after request: 38\n",
"Message received 1.83 seconds after request: ,\n",
"Message received 1.83 seconds after request: \n",
"Message received 1.84 seconds after request: 39\n",
"Message received 1.84 seconds after request: ,\n",
"Message received 1.84 seconds after request: \n",
"Message received 1.87 seconds after request: 40\n",
"Message received 1.87 seconds after request: ,\n",
"Message received 1.87 seconds after request: \n",
"Message received 1.88 seconds after request: 41\n",
"Message received 1.88 seconds after request: ,\n",
"Message received 1.88 seconds after request: \n",
"Message received 1.91 seconds after request: 42\n",
"Message received 1.91 seconds after request: ,\n",
"Message received 1.91 seconds after request: \n",
"Message received 1.93 seconds after request: 43\n",
"Message received 1.93 seconds after request: ,\n",
"Message received 1.93 seconds after request: \n",
"Message received 1.93 seconds after request: 44\n",
"Message received 1.93 seconds after request: ,\n",
"Message received 1.93 seconds after request: \n",
"Message received 1.95 seconds after request: 45\n",
"Message received 1.95 seconds after request: ,\n",
"Message received 1.95 seconds after request: \n",
"Message received 2.00 seconds after request: 46\n",
"Message received 2.00 seconds after request: ,\n",
"Message received 2.00 seconds after request: \n",
"Message received 2.00 seconds after request: 47\n",
"Message received 2.00 seconds after request: ,\n",
"Message received 2.00 seconds after request: \n",
"Message received 2.00 seconds after request: 48\n",
"Message received 2.00 seconds after request: ,\n",
"Message received 2.00 seconds after request: \n",
"Message received 2.00 seconds after request: 49\n",
"Message received 2.00 seconds after request: ,\n",
"Message received 2.00 seconds after request: \n",
"Message received 2.00 seconds after request: 50\n",
"Message received 2.00 seconds after request: ,\n",
"Message received 2.00 seconds after request: \n",
"Message received 2.00 seconds after request: 51\n",
"Message received 2.00 seconds after request: ,\n",
"Message received 2.04 seconds after request: \n",
"Message received 2.04 seconds after request: 52\n",
"Message received 2.04 seconds after request: ,\n",
"Message received 2.04 seconds after request: \n",
"Message received 2.04 seconds after request: 53\n",
"Message received 2.04 seconds after request: ,\n",
"Message received 2.13 seconds after request: \n",
"Message received 2.13 seconds after request: 54\n",
"Message received 2.14 seconds after request: ,\n",
"Message received 2.14 seconds after request: \n",
"Message received 2.14 seconds after request: 44\n",
"Message received 2.14 seconds after request: 55\n",
"Message received 2.14 seconds after request: ,\n",
"Message received 2.14 seconds after request: \n",
"Message received 2.14 seconds after request: 45\n",
"Message received 2.14 seconds after request: 56\n",
"Message received 2.14 seconds after request: ,\n",
"Message received 2.14 seconds after request: \n",
"Message received 2.15 seconds after request: 46\n",
"Message received 2.15 seconds after request: ,\n",
"Message received 2.15 seconds after request: \n",
"Message received 2.30 seconds after request: 47\n",
"Message received 2.30 seconds after request: ,\n",
"Message received 2.30 seconds after request: \n",
"Message received 2.30 seconds after request: 48\n",
"Message received 2.30 seconds after request: ,\n",
"Message received 2.30 seconds after request: \n",
"Message received 2.30 seconds after request: 49\n",
"Message received 2.30 seconds after request: ,\n",
"Message received 2.30 seconds after request: \n",
"Message received 2.31 seconds after request: 50\n",
"Message received 2.31 seconds after request: ,\n",
"Message received 2.31 seconds after request: \n",
"Message received 2.39 seconds after request: 51\n",
"Message received 2.16 seconds after request: 57\n",
"Message received 2.16 seconds after request: ,\n",
"Message received 2.16 seconds after request: \n",
"Message received 2.17 seconds after request: 58\n",
"Message received 2.17 seconds after request: ,\n",
"Message received 2.17 seconds after request: \n",
"Message received 2.19 seconds after request: 59\n",
"Message received 2.19 seconds after request: ,\n",
"Message received 2.19 seconds after request: \n",
"Message received 2.21 seconds after request: 60\n",
"Message received 2.21 seconds after request: ,\n",
"Message received 2.21 seconds after request: \n",
"Message received 2.34 seconds after request: 61\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.34 seconds after request: 62\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.34 seconds after request: 63\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.34 seconds after request: 64\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.34 seconds after request: 65\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.34 seconds after request: 66\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.34 seconds after request: 67\n",
"Message received 2.34 seconds after request: ,\n",
"Message received 2.34 seconds after request: \n",
"Message received 2.36 seconds after request: 68\n",
"Message received 2.36 seconds after request: ,\n",
"Message received 2.36 seconds after request: \n",
"Message received 2.36 seconds after request: 69\n",
"Message received 2.36 seconds after request: ,\n",
"Message received 2.36 seconds after request: \n",
"Message received 2.38 seconds after request: 70\n",
"Message received 2.38 seconds after request: ,\n",
"Message received 2.38 seconds after request: \n",
"Message received 2.39 seconds after request: 71\n",
"Message received 2.39 seconds after request: ,\n",
"Message received 2.39 seconds after request: \n",
"Message received 2.40 seconds after request: 52\n",
"Message received 2.40 seconds after request: ,\n",
"Message received 2.39 seconds after request: 72\n",
"Message received 2.39 seconds after request: ,\n",
"Message received 2.39 seconds after request: \n",
"Message received 2.39 seconds after request: 73\n",
"Message received 2.39 seconds after request: ,\n",
"Message received 2.39 seconds after request: \n",
"Message received 2.39 seconds after request: 74\n",
"Message received 2.39 seconds after request: ,\n",
"Message received 2.39 seconds after request: \n",
"Message received 2.39 seconds after request: 75\n",
"Message received 2.39 seconds after request: ,\n",
"Message received 2.40 seconds after request: \n",
"Message received 2.48 seconds after request: 53\n",
"Message received 2.48 seconds after request: ,\n",
"Message received 2.48 seconds after request: \n",
"Message received 2.49 seconds after request: 54\n",
"Message received 2.49 seconds after request: ,\n",
"Message received 2.49 seconds after request: \n",
"Message received 2.68 seconds after request: 55\n",
"Message received 2.40 seconds after request: 76\n",
"Message received 2.40 seconds after request: ,\n",
"Message received 2.42 seconds after request: \n",
"Message received 2.42 seconds after request: 77\n",
"Message received 2.42 seconds after request: ,\n",
"Message received 2.51 seconds after request: \n",
"Message received 2.51 seconds after request: 78\n",
"Message received 2.51 seconds after request: ,\n",
"Message received 2.52 seconds after request: \n",
"Message received 2.52 seconds after request: 79\n",
"Message received 2.52 seconds after request: ,\n",
"Message received 2.52 seconds after request: \n",
"Message received 2.52 seconds after request: 80\n",
"Message received 2.52 seconds after request: ,\n",
"Message received 2.52 seconds after request: \n",
"Message received 2.52 seconds after request: 81\n",
"Message received 2.52 seconds after request: ,\n",
"Message received 2.52 seconds after request: \n",
"Message received 2.52 seconds after request: 82\n",
"Message received 2.52 seconds after request: ,\n",
"Message received 2.60 seconds after request: \n",
"Message received 2.60 seconds after request: 83\n",
"Message received 2.60 seconds after request: ,\n",
"Message received 2.64 seconds after request: \n",
"Message received 2.64 seconds after request: 84\n",
"Message received 2.64 seconds after request: ,\n",
"Message received 2.64 seconds after request: \n",
"Message received 2.64 seconds after request: 85\n",
"Message received 2.64 seconds after request: ,\n",
"Message received 2.64 seconds after request: \n",
"Message received 2.66 seconds after request: 86\n",
"Message received 2.66 seconds after request: ,\n",
"Message received 2.66 seconds after request: \n",
"Message received 2.66 seconds after request: 87\n",
"Message received 2.66 seconds after request: ,\n",
"Message received 2.66 seconds after request: \n",
"Message received 2.68 seconds after request: 88\n",
"Message received 2.68 seconds after request: ,\n",
"Message received 2.68 seconds after request: \n",
"Message received 2.72 seconds after request: 56\n",
"Message received 2.69 seconds after request: 89\n",
"Message received 2.69 seconds after request: ,\n",
"Message received 2.69 seconds after request: \n",
"Message received 2.72 seconds after request: 90\n",
"Message received 2.72 seconds after request: ,\n",
"Message received 2.72 seconds after request: \n",
"Message received 2.77 seconds after request: 57\n",
"Message received 2.77 seconds after request: ,\n",
"Message received 2.77 seconds after request: \n",
"Message received 2.80 seconds after request: 58\n",
"Message received 2.80 seconds after request: ,\n",
"Message received 2.80 seconds after request: \n",
"Message received 2.85 seconds after request: 59\n",
"Message received 2.85 seconds after request: ,\n",
"Message received 2.85 seconds after request: \n",
"Message received 2.88 seconds after request: 60\n",
"Message received 2.88 seconds after request: ,\n",
"Message received 2.88 seconds after request: \n",
"Message received 2.88 seconds after request: 61\n",
"Message received 2.88 seconds after request: ,\n",
"Message received 2.88 seconds after request: \n",
"Message received 2.89 seconds after request: 62\n",
"Message received 2.89 seconds after request: ,\n",
"Message received 2.89 seconds after request: \n",
"Message received 2.89 seconds after request: 63\n",
"Message received 2.89 seconds after request: ,\n",
"Message received 2.89 seconds after request: \n",
"Message received 2.92 seconds after request: 64\n",
"Message received 2.92 seconds after request: ,\n",
"Message received 2.92 seconds after request: \n",
"Message received 3.37 seconds after request: 65\n",
"Message received 3.37 seconds after request: ,\n",
"Message received 3.37 seconds after request: \n",
"Message received 3.38 seconds after request: 66\n",
"Message received 3.38 seconds after request: ,\n",
"Message received 3.38 seconds after request: \n",
"Message received 3.38 seconds after request: 67\n",
"Message received 3.38 seconds after request: ,\n",
"Message received 3.38 seconds after request: \n",
"Message received 3.38 seconds after request: 68\n",
"Message received 3.38 seconds after request: ,\n",
"Message received 3.38 seconds after request: \n",
"Message received 3.42 seconds after request: 69\n",
"Message received 3.42 seconds after request: ,\n",
"Message received 3.42 seconds after request: \n",
"Message received 3.43 seconds after request: 70\n",
"Message received 3.43 seconds after request: ,\n",
"Message received 3.43 seconds after request: \n",
"Message received 3.46 seconds after request: 71\n",
"Message received 3.46 seconds after request: ,\n",
"Message received 3.46 seconds after request: \n",
"Message received 3.47 seconds after request: 72\n",
"Message received 3.47 seconds after request: ,\n",
"Message received 3.47 seconds after request: \n",
"Message received 3.50 seconds after request: 73\n",
"Message received 3.50 seconds after request: ,\n",
"Message received 3.50 seconds after request: \n",
"Message received 3.51 seconds after request: 74\n",
"Message received 3.51 seconds after request: ,\n",
"Message received 3.51 seconds after request: \n",
"Message received 3.52 seconds after request: 75\n",
"Message received 3.52 seconds after request: ,\n",
"Message received 3.52 seconds after request: \n",
"Message received 3.54 seconds after request: 76\n",
"Message received 3.54 seconds after request: ,\n",
"Message received 3.54 seconds after request: \n",
"Message received 3.56 seconds after request: 77\n",
"Message received 3.56 seconds after request: ,\n",
"Message received 3.56 seconds after request: \n",
"Message received 3.59 seconds after request: 78\n",
"Message received 3.59 seconds after request: ,\n",
"Message received 3.59 seconds after request: \n",
"Message received 3.59 seconds after request: 79\n",
"Message received 3.59 seconds after request: ,\n",
"Message received 3.59 seconds after request: \n",
"Message received 3.59 seconds after request: 80\n",
"Message received 3.59 seconds after request: ,\n",
"Message received 3.59 seconds after request: \n",
"Message received 3.61 seconds after request: 81\n",
"Message received 3.61 seconds after request: ,\n",
"Message received 3.61 seconds after request: \n",
"Message received 3.65 seconds after request: 82\n",
"Message received 3.65 seconds after request: ,\n",
"Message received 3.65 seconds after request: \n",
"Message received 3.85 seconds after request: 83\n",
"Message received 3.85 seconds after request: ,\n",
"Message received 3.85 seconds after request: \n",
"Message received 3.90 seconds after request: 84\n",
"Message received 3.90 seconds after request: ,\n",
"Message received 3.90 seconds after request: \n",
"Message received 3.95 seconds after request: 85\n",
"Message received 3.95 seconds after request: ,\n",
"Message received 3.95 seconds after request: \n",
"Message received 4.00 seconds after request: 86\n",
"Message received 4.00 seconds after request: ,\n",
"Message received 4.00 seconds after request: \n",
"Message received 4.04 seconds after request: 87\n",
"Message received 4.04 seconds after request: ,\n",
"Message received 4.04 seconds after request: \n",
"Message received 4.08 seconds after request: 88\n",
"Message received 4.08 seconds after request: ,\n",
"Message received 4.08 seconds after request: \n",
"Message received 4.12 seconds after request: 89\n",
"Message received 4.12 seconds after request: ,\n",
"Message received 4.12 seconds after request: \n",
"Message received 4.18 seconds after request: 90\n",
"Message received 4.18 seconds after request: ,\n",
"Message received 4.18 seconds after request: \n",
"Message received 4.18 seconds after request: 91\n",
"Message received 4.18 seconds after request: ,\n",
"Message received 4.18 seconds after request: \n",
"Message received 4.18 seconds after request: 92\n",
"Message received 4.18 seconds after request: ,\n",
"Message received 4.18 seconds after request: \n",
"Message received 4.19 seconds after request: 93\n",
"Message received 4.19 seconds after request: ,\n",
"Message received 4.19 seconds after request: \n",
"Message received 4.20 seconds after request: 94\n",
"Message received 4.20 seconds after request: ,\n",
"Message received 4.20 seconds after request: \n",
"Message received 4.23 seconds after request: 95\n",
"Message received 4.23 seconds after request: ,\n",
"Message received 4.23 seconds after request: \n",
"Message received 4.27 seconds after request: 96\n",
"Message received 4.27 seconds after request: ,\n",
"Message received 4.27 seconds after request: \n",
"Message received 4.39 seconds after request: 97\n",
"Message received 4.39 seconds after request: ,\n",
"Message received 4.39 seconds after request: \n",
"Message received 4.39 seconds after request: 98\n",
"Message received 4.39 seconds after request: ,\n",
"Message received 4.39 seconds after request: \n",
"Message received 4.41 seconds after request: 99\n",
"Message received 4.41 seconds after request: ,\n",
"Message received 4.41 seconds after request: \n",
"Message received 4.41 seconds after request: 100\n",
"Message received 4.41 seconds after request: .\n",
"Message received 4.41 seconds after request: None\n",
"Full response received 4.41 seconds after request\n",
"Full conversation received: 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.\n"
"Message received 2.82 seconds after request: 91\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 92\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 93\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 94\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 95\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 96\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 97\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 98\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 99\n",
"Message received 2.82 seconds after request: ,\n",
"Message received 2.82 seconds after request: \n",
"Message received 2.82 seconds after request: 100\n",
"Message received 2.82 seconds after request: None\n",
"Full response received 2.82 seconds after request\n",
"Full conversation received: 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\n"
]
}
],
@ -530,7 +532,7 @@
"\n",
"# send a ChatCompletion request to count to 100\n",
"response = client.chat.completions.create(\n",
" model='gpt-3.5-turbo',\n",
" model='gpt-4o-mini',\n",
" messages=[\n",
" {'role': 'user', 'content': 'Count to 100, with a comma between each number and no newlines. E.g., 1, 2, 3, ...'}\n",
" ],\n",
@ -584,7 +586,7 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 7,
"metadata": {},
"outputs": [
{
@ -594,14 +596,17 @@
"choices: [Choice(delta=ChoiceDelta(content='', function_call=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)]\n",
"usage: None\n",
"****************\n",
"choices: [Choice(delta=ChoiceDelta(content='2', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)]\n",
"choices: [Choice(delta=ChoiceDelta(content='Two', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)]\n",
"usage: None\n",
"****************\n",
"choices: [Choice(delta=ChoiceDelta(content='.', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)]\n",
"usage: None\n",
"****************\n",
"choices: [Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None), finish_reason='stop', index=0, logprobs=None)]\n",
"usage: None\n",
"****************\n",
"choices: []\n",
"usage: CompletionUsage(completion_tokens=1, prompt_tokens=19, total_tokens=20)\n",
"usage: CompletionUsage(completion_tokens=2, prompt_tokens=18, total_tokens=20)\n",
"****************\n"
]
}
@ -611,7 +616,7 @@
"\n",
"# a ChatCompletion request\n",
"response = client.chat.completions.create(\n",
" model='gpt-3.5-turbo',\n",
" model='gpt-4o-mini',\n",
" messages=[\n",
" {'role': 'user', 'content': \"What's 1+1? Answer in one word.\"}\n",
" ],\n",
@ -624,13 +629,6 @@
" print(f\"choices: {chunk.choices}\\nusage: {chunk.usage}\")\n",
" print(\"****************\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
@ -649,7 +647,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
"version": "3.11.8"
},
"orig_nbformat": 4,
"vscode": {

@ -22,14 +22,14 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 20,
"id": "ef059e71",
"metadata": {},
"outputs": [],
"source": [
"import openai\n",
"\n",
"GPT_MODEL = 'gpt-3.5-turbo'"
"GPT_MODEL = 'gpt-4o-mini'"
]
},
{
@ -50,8 +50,8 @@
"\n",
"When designing guardrails it is important to consider the trade-off between **accuracy**, **latency** and **cost**, where you try to achieve maximum accuracy for the least impact to your bottom line and the user's experience. \n",
"\n",
"We'll begin with a simple **topical guardrail** which aims to detect off-topic questions and prevent the LLM from answering if triggered. This guardrail consists of a simple prompt and uses `gpt-3.5-turbo`, maximising latency/cost over accuracy, but if we wanted to optimize further we could consider:\n",
"- **Accuracy:** You could consider using a fine-tuned model or few-shot examples to increase the accuracy. RAG can also be effective if you have a corpus of information that can help determine whether a piece of content is allowed or not.\n",
"We'll begin with a simple **topical guardrail** which aims to detect off-topic questions and prevent the LLM from answering if triggered. This guardrail consists of a simple prompt and uses `gpt-4o-mini`, maximising latency/cost holding a good enough accuracy, but if we wanted to optimize further we could consider:\n",
"- **Accuracy:** You could consider fine-tuning `gpt-4o-mini` or few-shot examples to increase the accuracy. RAG can also be effective if you have a corpus of information that can help determine whether a piece of content is allowed or not.\n",
"- **Latency/Cost:** You could try fine-tuning smaller models, such as `babbage-002` or open-source offerings like Llama, which can perform quite well when given enough training examples. When using open-source offerings you can also tune the machines you are using for inference to maximize either cost or latency reduction.\n",
"\n",
"This simple guardrail aims to ensure the LLM only answers to a predefined set of topics, and responds to out-of-bounds queries with a canned message.\n",
@ -78,7 +78,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 21,
"id": "e95efc89",
"metadata": {},
"outputs": [],
@ -91,7 +91,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 22,
"id": "fee948e2",
"metadata": {},
"outputs": [],
@ -153,7 +153,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 23,
"id": "eba51754",
"metadata": {},
"outputs": [
@ -165,19 +165,29 @@
"Got guardrail response\n",
"Getting LLM response\n",
"Got LLM response\n",
"If you're a cat lover considering getting a dog, it's important to choose a breed that typically has a more cat-like temperament. Here are some dog breeds that are known to be more cat-friendly:\n",
"If you like cats and are considering getting a dog, there are several breeds known for their compatibility with feline friends. Here are some of the best dog breeds that tend to get along well with cats:\n",
"\n",
"1. Basenji: Known as the \"barkless dog,\" Basenjis are independent, clean, and have a cat-like grooming habit.\n",
"1. **Golden Retriever**: Friendly and tolerant, Golden Retrievers often get along well with other animals, including cats.\n",
"\n",
"2. Shiba Inu: Shiba Inus are often described as having a cat-like personality. They are independent, clean, and tend to be reserved with strangers.\n",
"2. **Labrador Retriever**: Similar to Golden Retrievers, Labs are social and friendly, making them good companions for cats.\n",
"\n",
"3. Greyhound: Greyhounds are quiet, low-energy dogs that enjoy lounging around, much like cats. They are also known for their gentle and calm nature.\n",
"3. **Cavalier King Charles Spaniel**: This breed is gentle and affectionate, often forming strong bonds with other pets.\n",
"\n",
"4. Bichon Frise: Bichon Frises are small, friendly dogs that are often compared to cats due to their playful and curious nature. They are also hypoallergenic, making them a good choice for those with allergies.\n",
"4. **Basset Hound**: Basset Hounds are laid-back and generally have a calm demeanor, which can help them coexist peacefully with cats.\n",
"\n",
"5. Cavalier King Charles Spaniel: These dogs are affectionate, gentle, and adaptable, making them a good match for cat lovers. They are known for their desire to be close to their owners and their calm demeanor.\n",
"5. **Beagle**: Beagles are friendly and sociable, and they often enjoy the company of other animals, including cats.\n",
"\n",
"Remember, individual dogs can have different personalities, so it's important to spend time with the specific dog you're considering to see if their temperament aligns with your preferences.\n"
"6. **Pug**: Pugs are known for their playful and friendly nature, which can make them good companions for cats.\n",
"\n",
"7. **Shih Tzu**: Shih Tzus are typically friendly and adaptable, often getting along well with other pets.\n",
"\n",
"8. **Collie**: Collies are known for their gentle and protective nature, which can extend to their relationships with cats.\n",
"\n",
"9. **Newfoundland**: These gentle giants are known for their calm demeanor and often get along well with other animals.\n",
"\n",
"10. **Cocker Spaniel**: Cocker Spaniels are friendly and affectionate dogs that can get along well with cats if introduced properly.\n",
"\n",
"When introducing a dog to a cat, it's important to do so gradually and supervise their interactions to ensure a positive relationship. Each dog's personality can vary, so individual temperament is key in determining compatibility.\n"
]
}
],
@ -189,7 +199,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 24,
"id": "c7d88b57",
"metadata": {},
"outputs": [
@ -254,7 +264,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 16,
"id": "6c7b459f",
"metadata": {},
"outputs": [],
@ -294,7 +304,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 17,
"id": "43e3fd36",
"metadata": {},
"outputs": [],
@ -347,7 +357,7 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 18,
"id": "beea1305",
"metadata": {},
"outputs": [],
@ -358,7 +368,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 19,
"id": "1c582b4d",
"metadata": {},
"outputs": [
@ -392,30 +402,8 @@
"Got LLM response\n",
"Checking moderation guardrail\n",
"Got moderation response\n",
"Passed moderation\n",
"As a new dog owner, here are some helpful tips:\n",
"\n",
"1. Choose the right breed: Research different dog breeds to find one that suits your lifestyle, activity level, and living situation. Some breeds require more exercise and attention than others.\n",
"\n",
"2. Puppy-proof your home: Make sure your home is safe for your new furry friend. Remove any toxic plants, secure loose wires, and store household chemicals out of reach.\n",
"\n",
"3. Establish a routine: Dogs thrive on routine, so establish a consistent schedule for feeding, exercise, and bathroom breaks. This will help your dog feel secure and reduce any anxiety.\n",
"\n",
"4. Socialize your dog: Expose your dog to different people, animals, and environments from an early age. This will help them become well-adjusted and comfortable in various situations.\n",
"\n",
"5. Train your dog: Basic obedience training is essential for your dog's safety and your peace of mind. Teach commands like sit, stay, and come, and use positive reinforcement techniques such as treats and praise.\n",
"\n",
"6. Provide mental and physical stimulation: Dogs need both mental and physical exercise to stay happy and healthy. Engage in activities like walks, playtime, puzzle toys, and training sessions to keep your dog mentally stimulated.\n",
"\n",
"7. Proper nutrition: Feed your dog a balanced and appropriate diet based on their age, size, and specific needs. Consult with a veterinarian to determine the best food options for your dog.\n",
"\n",
"8. Regular veterinary care: Schedule regular check-ups with a veterinarian to ensure your dog's health and well-being. Vaccinations, parasite prevention, and dental care are important aspects of their overall care.\n",
"\n",
"9. Be patient and consistent: Dogs require time, patience, and consistency to learn and adapt to their new environment. Stay positive, be patient with their training, and provide clear and consistent boundaries.\n",
"\n",
"10. Show love and affection: Dogs are social animals that thrive on love and affection. Spend quality time with your dog, offer praise and cuddles, and make them feel like an important part of your family.\n",
"\n",
"Remember, being a responsible dog owner involves commitment, time, and effort. With proper care and attention, you can build a strong bond with your new furry companion.\n",
"Moderation guardrail flagged with a score of 3\n",
"Sorry, we're not permitted to give animal breed advice. I can help you with any general queries you might have.\n",
"\n",
"\n",
"\n"
@ -447,13 +435,19 @@
"\n",
"We look forward to seeing how you take this forward, and how thinking on guardrails evolves as the ecosystem matures. "
]
},
{
"cell_type": "markdown",
"id": "5ed7b04d",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "openai_test",
"display_name": "Python 3",
"language": "python",
"name": "openai_test"
"name": "python3"
},
"language_info": {
"codemirror_mode": {
@ -465,7 +459,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
"version": "3.11.8"
}
},
"nbformat": 4,

@ -26,7 +26,7 @@
"from openai import OpenAI\n",
"client = OpenAI()\n",
"\n",
"GPT_MODEL = 'gpt-3.5-turbo'"
"GPT_MODEL = 'gpt-4o-mini'"
]
},
{
@ -339,7 +339,7 @@
"Custom moderation provides a tailored approach to content filtering, allowing for precise adherence to specific community standards or topics, making it an ideal choice for niche platforms or specialized content. Unlike the general categories covered by the moderation API, custom moderation offers a higher degree of control and requires more effort to set up and maintain. It shares the common goal of ensuring content safety with guardrails, focusing on setting criteria to filter and manage content, whether it's user input or output from language models. Custom moderation can be an alternative or an extension to the moderation API, that uses our completions endpoint. For those interested in exploring guardrails further, a cookbook with examples and guidance is available [here](https://cookbook.openai.com/examples/how_to_use_guardrails).\n",
"\n",
"#### Workflow\n",
"We will implement a small example to showcase custom moderation. We will use an extra call to gpt-4 to assess messages and decide if they should be moderated or not."
"We will implement a small example to showcase custom moderation. We will use an extra call to gpt-4o mini to assess messages and decide if they should be moderated or not."
]
},
{
@ -349,7 +349,7 @@
"outputs": [],
"source": [
"def custom_moderation(content, parameters):\n",
" # Define the prompt for GPT-4\n",
" # Define the prompt \n",
" prompt = f\"\"\"Please assess the following content for any inappropriate material. You should base your assessment on the given parameters.\n",
" Your answer should be in json format with the following fields: \n",
" - flagged: a boolean indicating whether the content is flagged for any of the categories in the parameters\n",
@ -357,9 +357,9 @@
" - parameters: a dictionary of the parameters used for the assessment and their values\n",
" Parameters: {parameters}\\n\\nContent:\\n{content}\\n\\nAssessment:\"\"\"\n",
" \n",
" # Call GPT-4 with the prompt\n",
" # Call model with the prompt\n",
" response = client.chat.completions.create(\n",
" model=\"gpt-4-turbo-preview\",\n",
" model=\"gpt-4o-mini\",\n",
" response_format={ \"type\": \"json_object\" },\n",
" messages=[\n",
" {\"role\": \"system\", \"content\": \"You are a content moderation assistant.\"},\n",

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

@ -22,7 +22,7 @@
"\n",
"This cookbook will walk you through how to use the Batch API with a couple of practical examples.\n",
"\n",
"We will start with an example to categorize movies using `gpt-3.5-turbo`, and then cover how we can use the vision capabilities of `gpt-4-turbo` to caption images.\n",
"We will start with an example to categorize movies using `gpt-4o-mini`, and then cover how we can use the vision capabilities of this model to caption images.\n",
"\n",
"Please note that multiple models are available through the Batch API, and that you can use the same parameters in your Batch API calls as with the Chat Completions endpoint."
]
@ -77,7 +77,7 @@
"source": [
"## First example: Categorizing movies\n",
"\n",
"In this example, we will use `gpt-3.5-turbo` to extract movie categories from a description of the movie. We will also extract a 1-sentence summary from this description. \n",
"In this example, we will use `gpt-4o-mini` to extract movie categories from a description of the movie. We will also extract a 1-sentence summary from this description. \n",
"\n",
"We will use [JSON mode](https://platform.openai.com/docs/guides/text-generation/json-mode) to extract categories as an array of strings and the 1-sentence summary in a structured format. \n",
"\n",
@ -338,7 +338,7 @@
"\n",
"def get_categories(description):\n",
" response = client.chat.completions.create(\n",
" model=\"gpt-3.5-turbo\",\n",
" model=\"gpt-4o-mini\",\n",
" temperature=0.1,\n",
" # This is to enable JSON mode, making sure responses are valid json objects\n",
" response_format={ \n",
@ -374,7 +374,7 @@
"\n",
"RESULT: {\n",
" \"categories\": [\"drama\"],\n",
" \"summary\": \"Two imprisoned men bond over the years and find redemption through acts of common decency.\"\n",
" \"summary\": \"Two imprisoned men develop a deep bond over the years, ultimately finding redemption through their shared acts of kindness.\"\n",
"}\n",
"\n",
"\n",
@ -386,7 +386,7 @@
"\n",
"RESULT: {\n",
" \"categories\": [\"crime\", \"drama\"],\n",
" \"summary\": \"A crime drama about an aging patriarch passing on his empire to his son.\"\n",
" \"summary\": \"An aging crime lord hands over his empire to his hesitant son.\"\n",
"}\n",
"\n",
"\n",
@ -397,8 +397,8 @@
"OVERVIEW: When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, Batman must accept one of the greatest psychological and physical tests of his ability to fight injustice.\n",
"\n",
"RESULT: {\n",
" \"categories\": [\"action\", \"thriller\"],\n",
" \"summary\": \"A thrilling action movie where Batman faces the chaotic Joker in a battle of justice.\"\n",
" \"categories\": [\"action\", \"thriller\", \"superhero\"],\n",
" \"summary\": \"Batman faces a formidable challenge as the Joker unleashes chaos on Gotham City.\"\n",
"}\n",
"\n",
"\n",
@ -410,7 +410,7 @@
"\n",
"RESULT: {\n",
" \"categories\": [\"crime\", \"drama\"],\n",
" \"summary\": \"A portrayal of Vito Corleone's early life and career in 1920s New York City, as his son Michael expands the family crime syndicate.\"\n",
" \"summary\": \"The film depicts the early life of Vito Corleone and the rise of his son Michael within the family crime syndicate in 1920s New York City.\"\n",
"}\n",
"\n",
"\n",
@ -421,8 +421,8 @@
"OVERVIEW: A jury holdout attempts to prevent a miscarriage of justice by forcing his colleagues to reconsider the evidence.\n",
"\n",
"RESULT: {\n",
" \"categories\": [\"drama\"],\n",
" \"summary\": \"A gripping drama about a jury holdout trying to prevent a miscarriage of justice by challenging his colleagues to reconsider the evidence.\"\n",
" \"categories\": [\"drama\", \"thriller\"],\n",
" \"summary\": \"A jury holdout fights to ensure justice is served by challenging his fellow jurors to reevaluate the evidence.\"\n",
"}\n",
"\n",
"\n",
@ -489,7 +489,7 @@
" \"url\": \"/v1/chat/completions\",\n",
" \"body\": {\n",
" # This is what you would have in your Chat Completions API call\n",
" \"model\": \"gpt-3.5-turbo\",\n",
" \"model\": \"gpt-4o-mini\",\n",
" \"temperature\": 0.1,\n",
" \"response_format\": { \n",
" \"type\": \"json_object\"\n",
@ -557,7 +557,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"FileObject(id='file-nG1JDPSMRMinN8FOdaL30kVD', bytes=1127310, created_at=1714045723, filename='batch_tasks_movies.jsonl', object='file', purpose='batch', status='processed', status_details=None)\n"
"FileObject(id='file-lx16f1KyIxQ2UHVvkG3HLfNR', bytes=1127310, created_at=1721144107, filename='batch_tasks_movies.jsonl', object='file', purpose='batch', status='processed', status_details=None)\n"
]
}
],
@ -601,18 +601,10 @@
},
{
"cell_type": "code",
"execution_count": 45,
"execution_count": null,
"id": "6105d809",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Batch(id='batch_xU74ytOBYUpaUQE3Cwi8SCbA', completion_window='24h', created_at=1714049780, endpoint='/v1/chat/completions', input_file_id='file-6y0JPmkHU42qtaEK8x8ZYzkp', object='batch', status='completed', cancelled_at=None, cancelling_at=None, completed_at=1714049914, error_file_id=None, errors=None, expired_at=None, expires_at=1714136180, failed_at=None, finalizing_at=1714049896, in_progress_at=1714049821, metadata=None, output_file_id='file-XPfkEFZSaM4Avps7mcD3i8BY', request_counts=BatchRequestCounts(completed=312, failed=0, total=312))\n"
]
}
],
"outputs": [],
"source": [
"batch_job = client.batches.retrieve(batch_job.id)\n",
"print(batch_job)"
@ -787,7 +779,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 12,
"id": "079d21e7",
"metadata": {},
"outputs": [
@ -1049,7 +1041,7 @@
"[5 rows x 25 columns]"
]
},
"execution_count": 17,
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@ -1072,7 +1064,7 @@
},
{
"cell_type": "code",
"execution_count": 20,
"execution_count": 13,
"id": "918fd79f",
"metadata": {},
"outputs": [],
@ -1088,7 +1080,7 @@
"\n",
"def get_caption(img_url, title):\n",
" response = client.chat.completions.create(\n",
" model=\"gpt-4-turbo\",\n",
" model=\"gpt-4o-mini\",\n",
" temperature=0.2,\n",
" max_tokens=300,\n",
" messages=[\n",
@ -1120,7 +1112,7 @@
},
{
"cell_type": "code",
"execution_count": 22,
"execution_count": 14,
"id": "1daac93d",
"metadata": {},
"outputs": [
@ -1140,7 +1132,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"CAPTION: White multi-layer metal shoe rack featuring eight double hooks for hanging accessories, ideal for organizing footwear and small items in living spaces.\n",
"CAPTION: A stylish white free-standing shoe rack featuring multiple layers and eight double hooks, perfect for organizing shoes and accessories in living rooms, bathrooms, or hallways.\n",
"\n",
"\n"
]
@ -1161,7 +1153,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"CAPTION: A set of two elegant black leather dining chairs with a sleek design and vertical stitching detail on the backrest.\n",
"CAPTION: Set of 2 black leather dining chairs featuring a sleek design with vertical stitching and sturdy wooden legs.\n",
"\n",
"\n"
]
@ -1182,7 +1174,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"CAPTION: A green, waterproof, square, foldable repotting mat designed for indoor gardening, featuring raised edges and displayed with gardening tools and small potted plants.\n",
"CAPTION: The MUYETOL Plant Repotting Mat is a waterproof, portable, and foldable gardening work mat measuring 26.8\" x 26.8\", designed for easy soil changing and indoor transplanting.\n",
"\n",
"\n"
]
@ -1203,7 +1195,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"CAPTION: A brown, absorbent non-slip doormat featuring the phrase \"It's a good day to play PICKLEBALL\" with a pickleball paddle graphic, ideal for sports enthusiasts.\n",
"CAPTION: Absorbent non-slip doormat featuring the phrase \"It's a good day to play PICKLEBALL\" with paddle graphics, measuring 16x24 inches.\n",
"\n",
"\n"
]
@ -1224,7 +1216,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"CAPTION: Set of four foldable grey TV trays with a stand, featuring a sleek, space-saving design suitable for small areas.\n",
"CAPTION: Set of 4 foldable TV trays in grey, featuring a compact design with a stand for easy storage, perfect for small spaces.\n",
"\n",
"\n"
]
@ -1252,7 +1244,7 @@
},
{
"cell_type": "code",
"execution_count": 35,
"execution_count": 16,
"id": "48e59bb1",
"metadata": {},
"outputs": [],
@ -1272,7 +1264,7 @@
" \"url\": \"/v1/chat/completions\",\n",
" \"body\": {\n",
" # This is what you would have in your Chat Completions API call\n",
" \"model\": \"gpt-4-turbo\",\n",
" \"model\": \"gpt-4o-mini\",\n",
" \"temperature\": 0.2,\n",
" \"max_tokens\": 300,\n",
" \"messages\": [\n",
@ -1304,7 +1296,7 @@
},
{
"cell_type": "code",
"execution_count": 36,
"execution_count": 17,
"id": "e75193f2",
"metadata": {},
"outputs": [],
@ -1320,7 +1312,7 @@
},
{
"cell_type": "code",
"execution_count": 37,
"execution_count": 18,
"id": "f2bc166a",
"metadata": {},
"outputs": [],
@ -1335,7 +1327,7 @@
},
{
"cell_type": "code",
"execution_count": 38,
"execution_count": 19,
"id": "0d7d7ec9",
"metadata": {},
"outputs": [],
@ -1351,20 +1343,12 @@
},
{
"cell_type": "code",
"execution_count": 40,
"execution_count": null,
"id": "53456a08",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Batch(id='batch_xU74ytOBYUpaUQE3Cwi8SCbA', completion_window='24h', created_at=1714049780, endpoint='/v1/chat/completions', input_file_id='file-6y0JPmkHU42qtaEK8x8ZYzkp', object='batch', status='completed', cancelled_at=None, cancelling_at=None, completed_at=1714049914, error_file_id=None, errors=None, expired_at=None, expires_at=1714136180, failed_at=None, finalizing_at=1714049896, in_progress_at=1714049821, metadata=None, output_file_id='file-XPfkEFZSaM4Avps7mcD3i8BY', request_counts=BatchRequestCounts(completed=312, failed=0, total=312))\n"
]
}
],
"outputs": [],
"source": [
"batch_job = client.batches.retrieve(batch_job.id)\n",
"print(batch_job)"
@ -1559,7 +1543,7 @@
"source": [
"## Wrapping up\n",
"\n",
"In this cookbook, we have seen two examples of how to use the new Batch API, but keep in mind that the Batch API works the same way as the Chat Completions endpoint, supporting the same parameters and most of the recent models (gpt-3.5-turbo, gpt-4, gpt-4-vision-preview, gpt-4-turbo...).\n",
"In this cookbook, we have seen two examples of how to use the new Batch API, but keep in mind that the Batch API works the same way as the Chat Completions endpoint, supporting the same parameters and most of the recent models (gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo...).\n",
"\n",
"By using this API, you can significantly reduce costs, so we recommend switching every workload that can happen async to a batch job with this new API."
]
@ -1581,7 +1565,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
"version": "3.11.9"
}
},
"nbformat": 4,

File diff suppressed because one or more lines are too long

@ -1214,9 +1214,9 @@
tags:
- guardrails
- title: How to combine GPT4 with Vision with RAG to create a clothing matchmaker app
- title: How to combine GPT4o mini with RAG to create a clothing matchmaker app
path: examples/How_to_combine_GPT4o_with_RAG_Outfit_Assistant.ipynb
date: 2024-02-16
date: 2024-07-18
authors:
- teomusatoiu
tags:
@ -1234,9 +1234,9 @@
- embeddings
- title: Using GPT4 with Vision to tag and caption images
- title: Using GPT4o mini to tag and caption images
path: examples/Tag_caption_images_with_GPT4V.ipynb
date: 2024-02-28
date: 2024-07-18
authors:
- katiagg
tags:
@ -1306,9 +1306,9 @@
- completions
- functions
- title: Introduction to gpt-4o
- title: Introduction to GPT-4o and GPT-4o mini
path: examples/gpt4o/introduction_to_gpt4o.ipynb
date: 2024-05-13
date: 2024-07-18
authors:
- justonf
tags:

Loading…
Cancel
Save