diff --git a/01_open_ai_101.ipynb b/01_open_ai_101.ipynb index 2a0054a..a98f677 100644 --- a/01_open_ai_101.ipynb +++ b/01_open_ai_101.ipynb @@ -38,7 +38,7 @@ "client = OpenAI(\n", " api_key=os.environ['OPENAI_API_KEY'],\n", ")\n", - "COMPLETION_MODEL = \"text-davinci-003\"\n", + "COMPLETION_MODEL = \"gpt-3.5-turbo-instruct\"\n", "\n", "\n", "prompt = \"\"\"\n", @@ -116,7 +116,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.1" + "version": "3.10.13" }, "vscode": { "interpreter": { diff --git a/03_prompt_chatbot.ipynb b/03_prompt_chatbot.ipynb index c931db1..fb616d0 100644 --- a/03_prompt_chatbot.ipynb +++ b/03_prompt_chatbot.ipynb @@ -18,7 +18,7 @@ "\n", "client = OpenAI(api_key = os.environ.get(\"OPENAI_API_KEY\"))\n", "\n", - "COMPLETION_MODEL = \"text-davinci-003\"\n", + "COMPLETION_MODEL = \"gpt-3.5-turbo-instruct\"\n", "\n", "\n", "prompt = '请你用朋友的语气回复给到客户,并称他为“亲”,他的订单已经发货在路上了,预计在3天之内会送达,订单号2021AEDG,我们很抱歉因为天气的原因物流时间比原来长,感谢他选购我们的商品。'\n", diff --git a/07_clustering_and_summarize.ipynb b/07_clustering_and_summarize.ipynb index 24c9792..04794ca 100644 --- a/07_clustering_and_summarize.ipynb +++ b/07_clustering_and_summarize.ipynb @@ -601,7 +601,7 @@ ], "source": [ "items_per_cluster = 10\n", - "COMPLETIONS_MODEL = \"text-davinci-003\"\n", + "COMPLETIONS_MODEL = \"gpt-3.5-turbo-instruct\"\n", "\n", "for i in range(num_of_clusters):\n", " cluster_name = new_df[new_df.cluster == i].iloc[0].rank1\n", @@ -654,7 +654,7 @@ ], "source": [ "items_per_cluster = 1\n", - "COMPLETIONS_MODEL = \"text-davinci-003\"\n", + "COMPLETIONS_MODEL = \"gpt-3.5-turbo-instruct\"\n", "\n", "for i in range(num_of_clusters):\n", " cluster_name = new_df[new_df.cluster == i].iloc[0].rank1\n", diff --git a/08_edit_and_moderation.ipynb b/08_edit_and_moderation.ipynb index 10d2d08..3cc4354 100644 --- a/08_edit_and_moderation.ipynb +++ b/08_edit_and_moderation.ipynb @@ -652,7 +652,7 @@ "\n", "def insert_text(prefix, suffix):\n", " response = openai.Completion.create(\n", - " model=\"text-davinci-003\",\n", + " model=\"gpt-3.5-turbo-instruct\",\n", " prompt=prefix,\n", " suffix=suffix,\n", " max_tokens=1024,\n", diff --git a/09_semantic_search.ipynb b/09_semantic_search.ipynb index 3fce26c..727ff2d 100644 --- a/09_semantic_search.ipynb +++ b/09_semantic_search.ipynb @@ -77,7 +77,7 @@ "\n", "openai.api_key = os.environ.get(\"OPENAI_API_KEY\")\n", "\n", - "COMPLETION_MODEL = \"text-davinci-003\"\n", + "COMPLETION_MODEL = \"gpt-3.5-turbo-instruct\"\n", "\n", "def generate_data_by_prompt(prompt):\n", " response = openai.Completion.create(\n", diff --git a/13_unit_test.ipynb b/13_unit_test.ipynb index cadd398..9a4d597 100644 --- a/13_unit_test.ipynb +++ b/13_unit_test.ipynb @@ -85,7 +85,7 @@ } ], "source": [ - "def gpt35(prompt, model=\"text-davinci-002\", temperature=0.4, max_tokens=1000, \n", + "def gpt35(prompt, model=\"gpt-3.5-turbo-instruct\", temperature=0.4, max_tokens=1000, \n", " top_p=1, stop=[\"\\n\\n\", \"\\n\\t\\n\", \"\\n \\n\"]):\n", " response = openai.Completion.create(\n", " model=model,\n", @@ -293,7 +293,7 @@ "\n", "#{starter_comment}\"\"\"\n", " full_unit_test_prompt = prompt_to_explain_code + code_explaination + test_plan + prompt_to_generate_the_unit_test\n", - " return gpt35(model=\"text-davinci-003\", prompt=full_unit_test_prompt, stop=\"```\"), prompt_to_generate_the_unit_test\n", + " return gpt35(model=\"gpt-3.5-turbo-instruct\", prompt=full_unit_test_prompt, stop=\"```\"), prompt_to_generate_the_unit_test\n", "\n", "unit_test_response, prompt_to_generate_the_unit_test = generate_test_cases(code)\n", "print(unit_test_response)" diff --git a/14_langchain_01.ipynb b/14_langchain_01.ipynb index 2400ada..08318f3 100644 --- a/14_langchain_01.ipynb +++ b/14_langchain_01.ipynb @@ -37,7 +37,7 @@ "\n", "openai.api_key = os.environ.get(\"OPENAI_API_KEY\")\n", "\n", - "llm = OpenAI(model_name=\"text-davinci-003\", max_tokens=2048, temperature=0.5)\n", + "llm = OpenAI(model_name=\"gpt-3.5-turbo-instruct\", max_tokens=2048, temperature=0.5)\n", "\n", "en_to_zh_prompt = PromptTemplate(\n", " template=\"请把下面这句话翻译成英文: \\n\\n {question}?\", input_variables=[\"question\"]\n", @@ -260,7 +260,7 @@ " input_variables=[\"unit_test_package\", \"function_to_test\"],\n", " template=explain_code\n", " )\n", - " explain_code_llm = OpenAI(model_name=\"text-davinci-002\", temperature=0.4, max_tokens=1000, \n", + " explain_code_llm = OpenAI(model_name=\"gpt-3.5-turbo-instruct\", temperature=0.4, max_tokens=1000, \n", " top_p=1, stop=[\"\\n\\n\", \"\\n\\t\\n\", \"\\n \\n\"])\n", " explain_code_step = LLMChain(llm=explain_code_llm, prompt=explain_code_template, output_key=\"code_explaination\")\n", "\n", @@ -283,7 +283,7 @@ " input_variables=[\"unit_test_package\", \"function_to_test\", \"code_explaination\"],\n", " template= explain_code + \"{code_explaination}\" + test_plan\n", " )\n", - " test_plan_llm = OpenAI(model_name=\"text-davinci-002\", temperature=0.4, max_tokens=1000, \n", + " test_plan_llm = OpenAI(model_name=\"gpt-3.5-turbo-instruct\", temperature=0.4, max_tokens=1000, \n", " top_p=1, stop=[\"\\n\\n\", \"\\n\\t\\n\", \"\\n \\n\"])\n", " test_plan_step = LLMChain(llm=test_plan_llm, prompt=test_plan_template, output_key=\"test_plan\")\n", "\n", @@ -303,7 +303,7 @@ " input_variables=[\"unit_test_package\", \"function_to_test\", \"code_explaination\", \"test_plan\", \"starter_comment\"],\n", " template= explain_code + \"{code_explaination}\" + test_plan + \"{test_plan}\" + prompt_to_generate_the_unit_test\n", " )\n", - " unit_test_llm = OpenAI(model_name=\"text-davinci-002\", temperature=0.4, max_tokens=1000, stop=\"```\")\n", + " unit_test_llm = OpenAI(model_name=\"gpt-3.5-turbo-instruct\", temperature=0.4, max_tokens=1000, stop=\"```\")\n", " unit_test_step = LLMChain(llm=unit_test_llm, prompt=unit_test_template, output_key=\"unit_test\")\n", "\n", " sequential_chain = SequentialChain(chains=[explain_code_step, test_plan_step, unit_test_step], \n", diff --git a/15_langchain_02.ipynb b/15_langchain_02.ipynb index 8802455..03284c7 100644 --- a/15_langchain_02.ipynb +++ b/15_langchain_02.ipynb @@ -34,7 +34,7 @@ "from langchain.chains import LLMChain\n", "\n", "\n", - "llm = OpenAI(model_name=\"text-davinci-003\", max_tokens=2048, temperature=0.5)\n", + "llm = OpenAI(model_name=\"gpt-3.5-turbo-instruct\", max_tokens=2048, temperature=0.5)\n", "multiply_prompt = PromptTemplate(template=\"请计算一下{question}是多少?\", input_variables=[\"question\"])\n", "math_chain = LLMChain(llm=llm, prompt=multiply_prompt, output_key=\"answer\")\n", "answer = math_chain.run({\"question\": \"352乘以493\"})\n", diff --git a/16_langchain_memory.ipynb b/16_langchain_memory.ipynb index 1e3dfcf..4180cfc 100644 --- a/16_langchain_memory.ipynb +++ b/16_langchain_memory.ipynb @@ -436,7 +436,7 @@ ")\n", "\n", "conversation_with_summary = ConversationChain(\n", - " llm=OpenAI(model_name=\"text-davinci-003\", stop=\"\\n\\n\", max_tokens=2048, temperature=0.5), \n", + " llm=OpenAI(model_name=\"gpt-3.5-turbo-instruct\", stop=\"\\n\\n\", max_tokens=2048, temperature=0.5), \n", " prompt=CHEF_PROMPT,\n", " memory=memory,\n", " verbose=True\n", diff --git a/18_fine_tune_and_stream.ipynb b/18_fine_tune_and_stream.ipynb index 0feb3de..b9b6494 100644 --- a/18_fine_tune_and_stream.ipynb +++ b/18_fine_tune_and_stream.ipynb @@ -25,7 +25,7 @@ "@backoff.on_exception(backoff.expo, openai.error.RateLimitError)\n", "def gpt35(prompt, max_tokens=2048, temperature=0.5, top_p=1, frequency_penalty=0, presence_penalty=0):\n", " response = openai.Completion.create(\n", - " engine=\"text-davinci-003\",\n", + " engine=\"gpt-3.5-turbo-instruct\",\n", " prompt=prompt,\n", " max_tokens=max_tokens,\n", " temperature=temperature,\n", diff --git a/AIAssistant.bas b/AIAssistant.bas index c2947d7..3d3e54f 100644 --- a/AIAssistant.bas +++ b/AIAssistant.bas @@ -21,7 +21,7 @@ Sub GetOpenAIResults() Set ws = wb.ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row apiKey = "YOUR OPENAI API KEY HERE" - url = "https://api.openai.com/v1/engines/text-davinci-003/completions" + url = "https://api.openai.com/v1/engines/gpt-3.5-turbo-instruct/completions" 'Loop through each row in column A diff --git a/requirements.txt b/requirements.txt index c90d85e..9602fe0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ backoff==2.2.1 +google-search-results==2.4.2 ipywidgets==8.1.1 jupyterlab==4.0.9 langchain==0.0.352 @@ -8,4 +9,5 @@ openai==1.6.1 pandas==2.1.4 pyarrow==14.0.2 pytest==7.4.3 -scikit-learn==1.3.2 \ No newline at end of file +scikit-learn==1.3.2 +serpapi==0.1.5 diff --git a/season2/01_json_format.ipynb b/season2/01_json_format.ipynb new file mode 100644 index 0000000..67b39a1 --- /dev/null +++ b/season2/01_json_format.ipynb @@ -0,0 +1,465 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 过时的Text Completion 接口" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "NotFoundError", + "evalue": "Error code: 404 - {'error': {'message': 'The model `text-davinci-003` has been deprecated, learn more here: https://platform.openai.com/docs/deprecations', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[4], line 32\u001b[0m\n\u001b[1;32m 29\u001b[0m message \u001b[38;5;241m=\u001b[39m completions\u001b[38;5;241m.\u001b[39mchoices[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mtext\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m message\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mget_response\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprompt\u001b[49m\u001b[43m)\u001b[49m) \n", + "Cell \u001b[0;32mIn[4], line 21\u001b[0m, in \u001b[0;36mget_response\u001b[0;34m(prompt, model)\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_response\u001b[39m(prompt, model\u001b[38;5;241m=\u001b[39mCOMPLETION_MODEL):\n\u001b[0;32m---> 21\u001b[0m completions \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompletions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 22\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 23\u001b[0m \u001b[43m \u001b[49m\u001b[43mprompt\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprompt\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 24\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m512\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 29\u001b[0m message \u001b[38;5;241m=\u001b[39m completions\u001b[38;5;241m.\u001b[39mchoices[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mtext\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m message\n", + "File \u001b[0;32m~/venv/lib/python3.10/site-packages/openai/_utils/_utils.py:272\u001b[0m, in \u001b[0;36mrequired_args..inner..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 270\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing required argument: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mquote(missing[\u001b[38;5;241m0\u001b[39m])\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 271\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(msg)\n\u001b[0;32m--> 272\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/venv/lib/python3.10/site-packages/openai/resources/completions.py:562\u001b[0m, in \u001b[0;36mCompletions.create\u001b[0;34m(self, model, prompt, best_of, echo, frequency_penalty, logit_bias, logprobs, max_tokens, n, presence_penalty, seed, stop, stream, suffix, temperature, top_p, user, extra_headers, extra_query, extra_body, timeout)\u001b[0m\n\u001b[1;32m 520\u001b[0m \u001b[38;5;129m@required_args\u001b[39m([\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprompt\u001b[39m\u001b[38;5;124m\"\u001b[39m], [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprompt\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstream\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate\u001b[39m(\n\u001b[1;32m 522\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 560\u001b[0m timeout: \u001b[38;5;28mfloat\u001b[39m \u001b[38;5;241m|\u001b[39m httpx\u001b[38;5;241m.\u001b[39mTimeout \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m|\u001b[39m NotGiven \u001b[38;5;241m=\u001b[39m NOT_GIVEN,\n\u001b[1;32m 561\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Completion \u001b[38;5;241m|\u001b[39m Stream[Completion]:\n\u001b[0;32m--> 562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_post\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 563\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/completions\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 564\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaybe_transform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 565\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[1;32m 566\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 567\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprompt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mprompt\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 568\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbest_of\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mbest_of\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 569\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mecho\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mecho\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 570\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfrequency_penalty\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrequency_penalty\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 571\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mlogit_bias\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mlogit_bias\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 572\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mlogprobs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mlogprobs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 573\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax_tokens\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 574\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mn\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 575\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpresence_penalty\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mpresence_penalty\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 576\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseed\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mseed\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 577\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstop\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 578\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstream\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 579\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msuffix\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msuffix\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 580\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtemperature\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 581\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_p\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_p\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 582\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43muser\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43muser\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 583\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 584\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompletion_create_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCompletionCreateParams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 585\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 586\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmake_request_options\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 587\u001b[0m \u001b[43m \u001b[49m\u001b[43mextra_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_headers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_query\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_query\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_body\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\n\u001b[1;32m 588\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 589\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mCompletion\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 590\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 591\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mStream\u001b[49m\u001b[43m[\u001b[49m\u001b[43mCompletion\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 592\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/venv/lib/python3.10/site-packages/openai/_base_client.py:1088\u001b[0m, in \u001b[0;36mSyncAPIClient.post\u001b[0;34m(self, path, cast_to, body, options, files, stream, stream_cls)\u001b[0m\n\u001b[1;32m 1074\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(\n\u001b[1;32m 1075\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1076\u001b[0m path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1083\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1084\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[1;32m 1085\u001b[0m opts \u001b[38;5;241m=\u001b[39m FinalRequestOptions\u001b[38;5;241m.\u001b[39mconstruct(\n\u001b[1;32m 1086\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url\u001b[38;5;241m=\u001b[39mpath, json_data\u001b[38;5;241m=\u001b[39mbody, files\u001b[38;5;241m=\u001b[39mto_httpx_files(files), \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39moptions\n\u001b[1;32m 1087\u001b[0m )\n\u001b[0;32m-> 1088\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m cast(ResponseT, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[0;32m~/venv/lib/python3.10/site-packages/openai/_base_client.py:853\u001b[0m, in \u001b[0;36mSyncAPIClient.request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 844\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\n\u001b[1;32m 845\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 846\u001b[0m cast_to: Type[ResponseT],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 851\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 852\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[0;32m--> 853\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 854\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 855\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 856\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 857\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 858\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 859\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/venv/lib/python3.10/site-packages/openai/_base_client.py:930\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 927\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mis_closed:\n\u001b[1;32m 928\u001b[0m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mread()\n\u001b[0;32m--> 930\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_status_error_from_response(err\u001b[38;5;241m.\u001b[39mresponse) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 932\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_response(\n\u001b[1;32m 933\u001b[0m cast_to\u001b[38;5;241m=\u001b[39mcast_to,\n\u001b[1;32m 934\u001b[0m options\u001b[38;5;241m=\u001b[39moptions,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 937\u001b[0m stream_cls\u001b[38;5;241m=\u001b[39mstream_cls,\n\u001b[1;32m 938\u001b[0m )\n", + "\u001b[0;31mNotFoundError\u001b[0m: Error code: 404 - {'error': {'message': 'The model `text-davinci-003` has been deprecated, learn more here: https://platform.openai.com/docs/deprecations', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}" + ] + } + ], + "source": [ + "from openai import OpenAI\n", + "import os\n", + "\n", + "client = OpenAI(\n", + " api_key=os.environ['OPENAI_API_KEY'],\n", + ")\n", + "COMPLETION_MODEL = \"text-davinci-003\"\n", + "\n", + "\n", + "prompt = \"\"\"\n", + "Consideration proudct : 工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具\n", + "\n", + "1. Compose human readale product title used on Amazon in english within 20 words.\n", + "2. Write 5 selling points for the products in Amazon.\n", + "3. Evaluate a price range for this product in U.S.\n", + "\n", + "Output the result in json format with three properties called title, selling_points and price_range\n", + "\"\"\"\n", + "\n", + "def get_response(prompt, model=COMPLETION_MODEL):\n", + " completions = client.completions.create (\n", + " model=model,\n", + " prompt=prompt,\n", + " max_tokens=512,\n", + " n=1,\n", + " stop=None,\n", + " temperature=0.0, \n", + " )\n", + " message = completions.choices[0].text\n", + " return message\n", + "\n", + "print(get_response(prompt)) " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog, Hot Selling Night Market Stall Toy with Light for Children's Water Play\",\n", + " \"selling_points\": [\n", + " \"Made with high quality PVC material\",\n", + " \"Inflatable and easy to store\",\n", + " \"Attractive design with glowing feature\",\n", + " \"Perfect for water play and night markets\",\n", + " \"Available in stock for immediate purchase\"\n", + " ],\n", + " \"price_range\": \"$15 - $25\"\n", + "}\n" + ] + } + ], + "source": [ + "\n", + "NEW_MODEL = \"gpt-3.5-turbo-instruct\"\n", + "\n", + "print(get_response(prompt, model=NEW_MODEL)) " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Hot Selling Light-up Frog Children's Water Toy\",\n", + " \"selling_points\": [\n", + " \"High-quality PVC material for durability\",\n", + " \"Inflatable design for easy storage and transportation\",\n", + " \"Glowing feature adds fun to nighttime play\",\n", + " \"Suitable for both kids and adults\",\n", + " \"Perfect for water play at the pool or beach\"\n", + " ],\n", + " \"price_range\": \"$10 - $20\"\n", + "}\n" + ] + } + ], + "source": [ + "from openai import OpenAI\n", + "import os\n", + "\n", + "client = OpenAI(\n", + " api_key=os.environ['OPENAI_API_KEY'],\n", + ")\n", + "CHAT_COMPLETION_MODEL = \"gpt-3.5-turbo\"\n", + "\n", + "\n", + "prompt = \"\"\"\n", + "Consideration proudct : 工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具\n", + "\n", + "1. Compose human readale product title used on Amazon in english within 20 words.\n", + "2. Write 5 selling points for the products in Amazon.\n", + "3. Evaluate a price range for this product in U.S.\n", + "\n", + "Output the result in json format with three properties called title, selling_points and price_range\n", + "\"\"\"\n", + "\n", + "def get_chat_response(prompt, model=CHAT_COMPLETION_MODEL):\n", + " messages = [\n", + " {\"role\" : \"system\", \"content\" : \"You are an useful AI asssitant.\"},\n", + " {\"role\" : \"user\", \"content\": prompt}\n", + " ]\n", + " response = client.chat.completions.create (\n", + " model=model,\n", + " messages=messages,\n", + " max_tokens=512,\n", + " n=1,\n", + " stop=None,\n", + " temperature=0.7, \n", + " )\n", + " message = response.choices[0].message.content\n", + " return message\n", + "\n", + "print(get_chat_response(prompt)) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chat Example with Dirty Data" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Certainly! Here's the information you requested in JSON format:\n", + "\n", + "```json\n", + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Bestseller Inflatable Toy with LED Lights for Children's Water Play\",\n", + " \"sellingPoints\": [\n", + " \"High-quality PVC material\",\n", + " \"Inflatable and portable design\",\n", + " \"Attractive LED lights for night play\",\n", + " \"Suitable for water activities\",\n", + " \"Popular choice at night markets\"\n", + " ],\n", + " \"priceRange\": \"$10 - $20\"\n", + "}\n", + "```\n", + "\n", + "Please note that the translation provided is based on the given product name, and the price range is presented as an estimate.\n" + ] + } + ], + "source": [ + "prompt = \"\"\"\n", + "Hi,\n", + "\n", + "Could you write me a title, 5 selling points, and a price range for a product called \"工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具\" in English in json format?\n", + "\"\"\"\n", + "\n", + "print(get_chat_response(prompt)) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using JSON format" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Stall Hot Selling Inflatable Toy Glowing Frog Children's Water Toy\",\n", + " \"selling_points\": [\n", + " \"Unique and eye-catching design\",\n", + " \"Made of durable PVC material\",\n", + " \"Great for kids to play with in the water\",\n", + " \"Glow feature adds fun during night time\",\n", + " \"Perfect for selling at night markets or outdoor events\"\n", + " ],\n", + " \"price_range\": \"$10.00 - $20.00\"\n", + "}\n" + ] + } + ], + "source": [ + "CHAT_COMPLETION_MODEL = \"gpt-3.5-turbo-0125\"\n", + "def get_json_response(prompt, model=CHAT_COMPLETION_MODEL):\n", + " messages = [\n", + " {\"role\" : \"system\", \"content\" : \"You are an useful AI asssitant.\"},\n", + " {\"role\" : \"user\", \"content\": prompt}\n", + " ]\n", + " response = client.chat.completions.create (\n", + " model=model,\n", + " messages=messages,\n", + " max_tokens=512,\n", + " n=1,\n", + " stop=None,\n", + " temperature=0, \n", + " response_format={ \"type\": \"json_object\" }, \n", + " )\n", + " message = response.choices[0].message.content\n", + " return message\n", + "\n", + "prompt = \"\"\"\n", + "Hi,\n", + "\n", + "Could you write me a title, 5 selling points, and a price range for a product called \"工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具\" in English in json format?\n", + "\n", + "The json format should be like this:\n", + "```\n", + "{\n", + " \"title\": \"Blablabla\",\n", + " \"selling_points\": [\n", + " \"Blablabla\",\n", + " \"Blablabla\",\n", + " \"Blablabla\",\n", + " \"Blablabla\",\n", + " \"Blablabla\"\n", + " ],\n", + " \"price_range\": \"$x.00 - $y.00\"\n", + "}\n", + "```\n", + "\"\"\"\n", + "\n", + "print(get_json_response(prompt)) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add Seed Param" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fp_69829325d0\n", + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Stall Hot Selling Inflatable Toy Glowing Frog Children's Water Toy\",\n", + " \"selling_points\": [\n", + " \"Made of high-quality PVC material\",\n", + " \"Unique design with glowing feature\",\n", + " \"Perfect for children to play with in the water\",\n", + " \"Ideal for night markets and outdoor events\",\n", + " \"Easy to inflate and deflate for storage\"\n", + " ],\n", + " \"price_range\": \"$10.00 - $20.00\"\n", + "}\n" + ] + } + ], + "source": [ + "def get_fingerprint_response(prompt, seed=42, model=CHAT_COMPLETION_MODEL):\n", + " messages = [\n", + " {\"role\" : \"system\", \"content\" : \"You are an useful AI asssitant.\"},\n", + " {\"role\" : \"user\", \"content\": prompt}\n", + " ]\n", + " response = client.chat.completions.create (\n", + " model=model,\n", + " messages=messages,\n", + " max_tokens=512,\n", + " n=1,\n", + " stop=None,\n", + " seed=seed,\n", + " temperature=0, \n", + " response_format={ \"type\": \"json_object\" }, \n", + " )\n", + " message = response.choices[0].message.content\n", + " fingerpring = response.system_fingerprint\n", + " return fingerpring, message\n", + "\n", + "fingerprint , json_response = get_fingerprint_response(prompt,seed=1)\n", + "print(fingerprint)\n", + "print(json_response)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fp_69829325d0\n", + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Stall Hot Selling Inflatable Toy Glowing Frog Children's Water Toy\",\n", + " \"selling_points\": [\n", + " \"Made of high-quality PVC material\",\n", + " \"Suitable for night markets and stalls\",\n", + " \"Glowing feature adds fun for children\",\n", + " \"Ideal for water play\",\n", + " \"Popular and in-demand product\"\n", + " ],\n", + " \"price_range\": \"$10.00 - $20.00\"\n", + "}\n" + ] + } + ], + "source": [ + "fingerprint , json_response = get_fingerprint_response(prompt,seed=2)\n", + "print(fingerprint)\n", + "print(json_response)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fp_69829325d0\n", + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Stall Hot Selling Inflatable Toy Glowing Frog Children's Water Toy\",\n", + " \"selling_points\": [\n", + " \"Made of high-quality PVC material\",\n", + " \"Unique design with glowing feature\",\n", + " \"Perfect for children to play with in the water\",\n", + " \"Ideal for night markets and outdoor events\",\n", + " \"Easy to inflate and deflate for storage\"\n", + " ],\n", + " \"price_range\": \"$10.00 - $20.00\"\n", + "}\n" + ] + } + ], + "source": [ + "fingerprint , json_response_1 = get_fingerprint_response(prompt,seed=12345)\n", + "print(fingerprint)\n", + "print(json_response_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fp_69829325d0\n", + "{\n", + " \"title\": \"Factory Stock PVC Inflatable Frog Night Market Stall Hot Selling Inflatable Toy Glowing Frog Children's Water Toy\",\n", + " \"selling_points\": [\n", + " \"Made of high-quality PVC material\",\n", + " \"Unique design with glowing feature\",\n", + " \"Perfect for children to play with in the water\",\n", + " \"Ideal for night markets and outdoor events\",\n", + " \"Easy to inflate and deflate for storage\"\n", + " ],\n", + " \"price_range\": \"$10.00 - $20.00\"\n", + "}\n" + ] + } + ], + "source": [ + "fingerprint , json_response_2 = get_fingerprint_response(prompt,seed=12345)\n", + "print(fingerprint)\n", + "print(json_response_2)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "print(json_response_1 == json_response_2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/season2/02_function_call.ipynb b/season2/02_function_call.ipynb new file mode 100644 index 0000000..d0ad974 --- /dev/null +++ b/season2/02_function_call.ipynb @@ -0,0 +1,1800 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Function Call" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "def add(x, y):\n", + " return json.dumps({\"result\" : x + y})\n", + "\n", + "def subtract(x, y):\n", + " return json.dumps({\"result\" : x - y})\n", + "\n", + "def multiply(x, y):\n", + " return json.dumps({\"result\" : x * y})\n", + "\n", + "def divide(x, y):\n", + " if y == 0:\n", + " return \"Error! Division by zero.\"\n", + " return json.dumps({\"result\" : x / y})\n", + "\n", + "def get_tools_definition(function_name, description):\n", + " return {\n", + " \"type\": \"function\",\n", + " \"function\": {\n", + " \"name\": function_name,\n", + " \"description\": description,\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"x\": {\n", + " \"type\": \"number\",\n", + " \"description\": \"The first number\",\n", + " },\n", + " \"y\": {\n", + " \"type\": \"number\",\n", + " \"description\": \"the second number\",\n", + " },\n", + " },\n", + " \"required\": [\"x\", \"y\"],\n", + " },\n", + " },\n", + " }\n", + "\n", + "tools = [\n", + " get_tools_definition(\"add\", \"add x to y\"),\n", + " get_tools_definition(\"subtract\", \"subtract y from x\"),\n", + " get_tools_definition(\"multiply\", \"x multiply y\"),\n", + " get_tools_definition(\"divide\", \"x divide y\"),\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "from openai import OpenAI\n", + "import json\n", + "\n", + "client = OpenAI()\n", + "\n", + "\n", + "messages = [{\"role\": \"user\", \"content\": \"What does 1024 + 10086 equal to?\"}]\n", + "response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo-0125\",\n", + " messages=messages,\n", + " tools=tools,\n", + " tool_choice=\"auto\", # auto is default, but we'll be explicit\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "response_message = response.choices[0].message\n", + "print(response_message.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "tool_calls = response_message.tool_calls\n", + "available_functions = {\n", + " \"add\": add,\n", + " \"subtract\": subtract,\n", + " \"multiply\": multiply,\n", + " \"divide\": divide,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"result\": 11110}\n" + ] + } + ], + "source": [ + "for tool_call in tool_calls:\n", + " function_name = tool_call.function.name\n", + " tool_call_id = tool_call.id\n", + " function_to_call = available_functions[function_name]\n", + " function_args = json.loads(tool_call.function.arguments)\n", + " function_response = function_to_call(\n", + " x=function_args.get(\"x\"),\n", + " y=function_args.get(\"y\"),\n", + " )\n", + " print(function_response)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1024 + 10086 = 11110\n" + ] + } + ], + "source": [ + "messages.append(response_message)\n", + "messages.append(\n", + " {\n", + " \"tool_call_id\": tool_call_id,\n", + " \"role\": \"tool\",\n", + " \"name\": function_name,\n", + " \"content\": str(function_response),\n", + " }\n", + ") \n", + "\n", + "final_response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo-0125\",\n", + " messages=messages,\n", + ")\n", + "print(final_response.choices[0].message.content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Incorrect Function Description" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def chat_using_function_call(content, tools = tools, available_functions = available_functions, client = client):\n", + " messages = [{\"role\": \"user\", \"content\": content}]\n", + " response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo-0125\",\n", + " messages=messages,\n", + " tools=tools,\n", + " tool_choice=\"auto\", # auto is default, but we'll be explicit\n", + " )\n", + " response_message = response.choices[0].message\n", + " messages.append(response_message) \n", + " tool_calls = response_message.tool_calls\n", + " for tool_call in tool_calls:\n", + " function_name = tool_call.function.name\n", + " function_to_call = available_functions[function_name]\n", + " function_args = json.loads(tool_call.function.arguments)\n", + " function_response = function_to_call(\n", + " x=function_args.get(\"x\"),\n", + " y=function_args.get(\"y\"),\n", + " )\n", + " messages.append(\n", + " {\n", + " \"tool_call_id\": tool_call.id,\n", + " \"role\": \"tool\",\n", + " \"name\": function_name,\n", + " \"content\": function_response,\n", + " }\n", + " )\n", + " final_response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo-0125\",\n", + " messages=messages,\n", + " )\n", + " print(final_response.choices[0].message.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10086 - 1024 equals 9062.\n" + ] + } + ], + "source": [ + "chat_using_function_call(\"What does 10086 - 1024 equal to?\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "tools = [\n", + " get_tools_definition(\"add\", \"add x to y\"),\n", + " get_tools_definition(\"subtract\", \"y - x\"),\n", + " get_tools_definition(\"multiply\", \"x multiply y\"),\n", + " get_tools_definition(\"divide\", \"x divide y\"),\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10086 - 1024 equals 9062.\n" + ] + } + ], + "source": [ + "chat_using_function_call(\"What does 10086 - 1024 equal to?\", tools = tools)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SerpAPI" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "API_KEY = \"YOUR_API_KEY\"\n", + "\n", + "from serpapi.google_search import GoogleSearch\n", + "\n", + "params = {\n", + " \"engine\": \"google_shopping\",\n", + " \"q\": \"Macbook M3\",\n", + " \"api_key\": API_KEY\n", + "}\n", + "search = GoogleSearch(params)\n", + "results = search.get_dict()\n", + "shopping_results = results[\"shopping_results\"]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " {\n", + " \"position\": 1,\n", + " \"title\": \"Apple 14\\\" MacBook Pro (M3, Space Gray) with Apple M3 8-Core Chip 8GB Unified RAM ...\",\n", + " \"link\": \"https://www.bhphotovideo.com/c/product/1793630-REG/apple_mtl73ll_a_14_macbook_pro_with.html?kw=APMTL73LLA&ap=y&smp=y&BI=E6540&srsltid=AfmBOopxJGtKB93QRtNQIcVcZ6ExpmkCUFj_tri2hicX0iQ02Jwvegnii78\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:10805795665197980642\",\n", + " \"product_id\": \"10805795665197980642\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=10805795665197980642\",\n", + " \"source\": \"B&H Photo-Video-Audio\",\n", + " \"price\": \"$1,449.00\",\n", + " \"extracted_price\": 1449.0,\n", + " \"old_price\": \"$1,599.00\",\n", + " \"extracted_old_price\": 1599.0,\n", + " \"rating\": 5.0,\n", + " \"reviews\": 2,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"SALE\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcSsgQRaUyhy55HR7cPi7eWuNpOoEFknuiDlnKjbn8kc3dK3rQHLFlugmcGbEDXtzxtMoRQ-THZeGhPt6zvZ7WkyWPhaotwxNhzBkG7Nn2GY&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery by tomorrow\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 54400\n", + " },\n", + " {\n", + " \"position\": 2,\n", + " \"title\": \"Apple - MacBook Pro 14\\\" Laptop - M3 chip - 8GB Memory - 10-core GPU - 512GB SSD ...\",\n", + " \"link\": \"https://www.bestbuy.com/site/apple-macbook-pro-14-laptop-m3-chip-8gb-memory-10-core-gpu-512gb-ssd-latest-model-space-gray/6534641.p?skuId=6534641&ref=212&loc=1&utm_source=feed&extStoreId=149\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:17673757293228625540\",\n", + " \"product_id\": \"17673757293228625540\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=17673757293228625540\",\n", + " \"source\": \"Best Buy\",\n", + " \"price\": \"$1,599.00\",\n", + " \"extracted_price\": 1599.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"CURBSIDE\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcTnDgckNpBDahk74COSD5uwch5rqACArf3R8bNhRltok7JJOIfUQfvWYDUod52RaCO4t5eO9tWFtUZK2H4USguTikivOzRQwhYmaOp_fcg&usqp=CAE\",\n", + " \"tag\": \"CURBSIDE\",\n", + " \"delivery\": \"6.2 mi \\u00b7 In stock \\u00b7 Free 15-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 830\n", + " },\n", + " {\n", + " \"position\": 3,\n", + " \"title\": \"15-inch MacBook Air with Apple M3 and 10-Core GPU Starlight / 8GB / 256GB\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/MRYR3?cid=aos-us-seo-pla-mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/11724672376034452995?gl=us\",\n", + " \"product_id\": \"11724672376034452995\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=11724672376034452995\",\n", + " \"number_of_comparisons\": \"10+\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/11724672376034452995/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:5834801789723834723_0,local:1,pid:15480891913248649809,prmr:2&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECPMR\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A5834801789723834723_0%2Clocal%3A1%2Cpid%3A15480891913248649809%2Cprmr%3A2&gl=us&hl=en&offers=1&product_id=11724672376034452995&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECPMR\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$1,299.00\",\n", + " \"extracted_price\": 1299.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"SAME-DAY DELIVERY\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcRedxV9vfhacoyT2B17If6uzhLkMrdBdacZJk2YPOU1Rwbwrxec_6V0uJBm0tJk6MpluVjbgso6jtKXj0le_nwbdjB5xIx5YWfwP7326uhdHThkih9Lxmz3&usqp=CAE\",\n", + " \"tag\": \"SAME-DAY DELIVERY\",\n", + " \"delivery\": \"7.1 mi \\u00b7 In stock \\u00b7 Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 4,\n", + " \"title\": \"Apple - MacBook Pro 14\\\" Laptop - M3 Pro chip - 18GB Memory - 14-core GPU - 512GB ...\",\n", + " \"link\": \"https://www.bestbuy.com/site/apple-macbook-pro-14-laptop-m3-pro-chip-18gb-memory-14-core-gpu-512gb-ssd-latest-model-space-black/6534615.p?skuId=6534615&ref=212&loc=1&utm_source=feed&extStoreId=149\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:13333933948441862016\",\n", + " \"product_id\": \"13333933948441862016\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=13333933948441862016\",\n", + " \"source\": \"Best Buy\",\n", + " \"price\": \"$1,799.00\",\n", + " \"extracted_price\": 1799.0,\n", + " \"old_price\": \"$1,999.00\",\n", + " \"extracted_old_price\": 1999.0,\n", + " \"rating\": 4.8,\n", + " \"reviews\": 2549,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"120Hz\",\n", + " \"SALE\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcQ4l98605Z1EOs9qMY4yvFqLVAI7WY4dk-nH9IPCAp5-bfEjg1SItEfHQAc7aJ2mpIsO-XQXKsouJ9JV34azmU4ou2kKT0x4JdLd5Ura0_BZd27UyjM60YE&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"6.2 mi \\u00b7 In stock \\u00b7 Curbside \\u00b7 Free 15-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 830\n", + " },\n", + " {\n", + " \"position\": 5,\n", + " \"title\": \"Apple 14\\\" MacBook Pro (M3 Pro, Silver) with Apple M3 Pro 11-Core 18GB Unified RAM ...\",\n", + " \"link\": \"https://www.bhphotovideo.com/c/product/1793627-REG/apple_mrx63ll_a_14_macbook_pro_pro.html?kw=APMRX63LLA&ap=y&smp=y&BI=E6540&srsltid=AfmBOorPhYq0lNeLS9ZZSAcUhSEkR6JdxF9evNJtXRx6VtUeCfMOA8i9XtU\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:2127620120171139367\",\n", + " \"product_id\": \"2127620120171139367\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=2127620120171139367\",\n", + " \"source\": \"B&H Photo-Video-Audio\",\n", + " \"price\": \"$1,799.00\",\n", + " \"extracted_price\": 1799.0,\n", + " \"old_price\": \"$1,999.00\",\n", + " \"extracted_old_price\": 1999.0,\n", + " \"rating\": 4.7,\n", + " \"reviews\": 14,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Hexa Core\",\n", + " \"USB-C\",\n", + " \"SALE\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcRUV0J8A8ksiG2Jw3G4gLJG2jZZOdOSeUw9PAiHDnF1InCtTKoyCKUMkE1W_qhKkEIk_Dnmp1JlFR1HVSFYKX2RJLBcg2mLvpNHUyIM7pI-&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery by tomorrow\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 54400\n", + " },\n", + " {\n", + " \"position\": 6,\n", + " \"title\": \"Refurbished 14-inch MacBook Pro Apple M3 Pro Chip with 11\\u2010core CPU and 14\\u2010core ...\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/G1AU4?cid=aos-us-seo-pla-refurb_mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1492926159343824680?gl=us\",\n", + " \"product_id\": \"1492926159343824680\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=1492926159343824680\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$2,209.00\",\n", + " \"extracted_price\": 2209.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"144Hz\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcTWtlE4NrR7R2ET5JMA1INytNZrB5_7R_dRrN9gl-4k1ZpEnDuE1D56zq-gY2Jb8xd2GV87UK8C-0HE7W63laoeitJYFUrWLvDSpNDtoPxJh_7uwdfsm4xoXg&usqp=CAE\",\n", + " \"delivery\": \"Free delivery & Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 7,\n", + " \"title\": \"13-inch MacBook Air with Apple M3 and 8-Core GPU Midnight / 8GB / 256GB\",\n", + " \"link\": \"https://www.nfm.com/apple-13-inch-macbook-air-apple-m3-chip-with-8-core-cpu-and-8-core-gpu-8gb-256gb-ssd--midnight-latest-model-66219015/66219015.html\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/3365949355912562438?gl=us\",\n", + " \"product_id\": \"3365949355912562438\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=3365949355912562438\",\n", + " \"number_of_comparisons\": \"10+\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/3365949355912562438/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:6090825808882580794_0,pid:2464331733929146327,rsk:PC_17290866509302526888&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECNES\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A6090825808882580794_0%2Cpid%3A2464331733929146327%2Crsk%3APC_17290866509302526888&gl=us&hl=en&offers=1&product_id=3365949355912562438&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECNES\",\n", + " \"source\": \"NFM\",\n", + " \"price\": \"$1,099.00\",\n", + " \"extracted_price\": 1099.0,\n", + " \"rating\": 5.0,\n", + " \"reviews\": 19,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcQJmAWyVxnHtIo-KAyevrPwDy05NCPKvhExLA4MeyFnh4jzCUy6dC971YMPHzRAZN0BIKxpZrqCEoAXweiDzaRfQOsf9BtQVr9oPrGefeQhuweHaJZ4gSxH&usqp=CAE\",\n", + " \"delivery\": \"+Shipping\",\n", + " \"store_rating\": 4.7,\n", + " \"store_reviews\": 25800\n", + " },\n", + " {\n", + " \"position\": 8,\n", + " \"title\": \"Apple 14\\\" MacBook Pro (M3, Silver) with Apple M3 8-Core Chip 8GB Unified RAM 14 ...\",\n", + " \"link\": \"https://www.bhphotovideo.com/c/product/1793616-REG/apple_mr7j3ll_a_14_macbook_pro_with.html?kw=APMR7J3LLA&ap=y&smp=y&BI=E6540&srsltid=AfmBOoo4C0zHWJSwhk51cpDgvzfZ5HyCN-eQJxy6k6fvMXZIsLoUpMD5WKA\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:7667332609866093514\",\n", + " \"product_id\": \"7667332609866093514\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=7667332609866093514\",\n", + " \"source\": \"B&H Photo-Video-Audio\",\n", + " \"price\": \"$1,599.00\",\n", + " \"extracted_price\": 1599.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"FREE 1-DAY\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcRVogz8VxYfngGT9tAReFdT8HFo05_hxCfnZj5JiP40G_oPomJBGHHW1RauaIveJxuYYq7sfn1bYiEhw87k6c8gpYyALOHUaamXlorBHjRd&usqp=CAE\",\n", + " \"tag\": \"FREE 1-DAY\",\n", + " \"delivery\": \"Free delivery by tomorrow\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 54400\n", + " },\n", + " {\n", + " \"position\": 9,\n", + " \"title\": \"Apple 2023 MacBook Pro Laptop M3 Pro Chip with 12\\u2010core CPU, 18\\u2010core Gpu: 14.2 ...\",\n", + " \"link\": \"https://www.amazon.com/Apple-MacBook-Laptop-12%E2%80%91core-18%E2%80%91core/dp/B0CM5KK44S?source=ps-sl-shoppingads-lpcontext&ref_=fplfs&psc=1&smid=A17MC6HOH9AVE6\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/10146395895749477590?gl=us\",\n", + " \"product_id\": \"10146395895749477590\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=10146395895749477590\",\n", + " \"source\": \"Amazon.com - Seller\",\n", + " \"price\": \"$2,348.36\",\n", + " \"extracted_price\": 2348.36,\n", + " \"rating\": 5.0,\n", + " \"reviews\": 6,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"HDMI\",\n", + " \"Space Black\",\n", + " \"$9.95 below typical\",\n", + " \"LOW PRICE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcTGjaRI_fKNVlsGXpPJ8TaQeF7G1mUCjQP42YVcEc-0-DXUrVr-5Vo3jNgejAgcc_hMxSyq9haCJg0KcJibMDTfqjEM513L3nj0wORtLVJ5Mv9kgvsWfGtU&usqp=CAE\",\n", + " \"tag\": \"LOW PRICE\",\n", + " \"delivery\": \"Free delivery\"\n", + " },\n", + " {\n", + " \"position\": 10,\n", + " \"title\": \"Refurbished 14-inch MacBook Pro Apple M3 Chip with 8\\u2010Core CPU and 10\\u2010Core GPU ...\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/FTL83?cid=aos-us-seo-pla-refurb_mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/16647654730998270620?gl=us\",\n", + " \"product_id\": \"16647654730998270620\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=16647654730998270620\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$1,529.00\",\n", + " \"extracted_price\": 1529.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"rating\": 4.8,\n", + " \"reviews\": 2549,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcRULYNwsIaYzH80GR1p0DsX8LeJikKKWryL7tuqkpX4oib5tgO5fIuqOKSJp5xj0NgyPFfzkVKDXYSwFUSq1YENjxnhazTElLodLFrV7qw0BEhJTCAMG_Nl&usqp=CAE\",\n", + " \"delivery\": \"Free delivery & Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 11,\n", + " \"title\": \"Apple - MacBook Pro 14\\\" Laptop - M3 Max chip - 36GB Memory - 30-core GPU - 1TB ...\",\n", + " \"link\": \"https://www.bestbuy.com/site/apple-macbook-pro-14-laptop-m3-max-chip-36gb-memory-30-core-gpu-1tb-ssd-latest-model-silver/6534621.p?skuId=6534621&utm_source=feed\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:8650784490724763253\",\n", + " \"product_id\": \"8650784490724763253\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=8650784490724763253\",\n", + " \"source\": \"Best Buy\",\n", + " \"price\": \"$3,199.00\",\n", + " \"extracted_price\": 3199.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"120Hz\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcTE5purDnqDo9oKI88UdMXDNbqRJ6wC78Ib7N6ISF9jTHB8_TnQ45wv4oLrh2jHX3JLC3MNc-6XwmgDywMhxHxx2Hpra3-xDqU7dlta78g&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 25 & Free 15-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 830\n", + " },\n", + " {\n", + " \"position\": 12,\n", + " \"title\": \"MacBook Pro (2023) 14.2-inch - Apple M3 Pro 11-core and 14-core GPU - 18GB RAM ...\",\n", + " \"link\": \"https://www.backmarket.com/en-us/p/macbook-pro-2023-142-inch-m3-pro-11-core-and-14-core-gpu-18gb-ram-ssd-512gb/ce45fdea-e712-4422-ac16-069f5eedc5ff?shopping=gmc&srsltid=AfmBOoqYsoCznfAItNZsjex5FVw5H2D3bxqVorWO0iTv05grjUrQeJDH-_U#l=10\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:7114459088026543998\",\n", + " \"product_id\": \"7114459088026543998\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=7114459088026543998\",\n", + " \"source\": \"Back Market\",\n", + " \"price\": \"$1,899.00\",\n", + " \"extracted_price\": 1899.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"HDMI\",\n", + " \"3024 x 1964\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcRpwFZOg-f-EkhGlMQa9Atldv4l8gCGT3gB1Nt8nmijRtQr0KYSwRQr87AVl4QiYTaHwsUVBNvv8f_TyJuPhW4QBHygGpvPdKxJcUAA_qc&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Mon, Mar 25\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 14500\n", + " },\n", + " {\n", + " \"position\": 13,\n", + " \"title\": \"Apple - MacBook Pro 16\\\" Laptop - M3 Pro chip - 18GB Memory - 18-core GPU - 512GB ...\",\n", + " \"link\": \"https://www.bestbuy.com/site/apple-macbook-pro-16-laptop-m3-pro-chip-18gb-memory-18-core-gpu-512gb-ssd-latest-model-space-black/6534617.p?skuId=6534617&utm_source=feed\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:9722332245110002441\",\n", + " \"product_id\": \"9722332245110002441\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=9722332245110002441\",\n", + " \"source\": \"Best Buy\",\n", + " \"price\": \"$2,499.00\",\n", + " \"extracted_price\": 2499.0,\n", + " \"rating\": 4.9,\n", + " \"reviews\": 268,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"120Hz\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcQPDIZoti-xC072H23JlxIB4UWdij3gxb6a5JvtWUJVo201WHJhiFTzXoftktNJRltjYtr2vDPtxwYLumKXjxEVtXeQzqL_lgfZbcfK4jit&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 25 & Free 15-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 830\n", + " },\n", + " {\n", + " \"position\": 14,\n", + " \"title\": \"Apple Mlh72ll/a Macbook Intel Core m3 256gb - Space Gray\",\n", + " \"link\": \"https://www.walmart.com/ip/Apple-A-Grade-Macbook-12-inch-Retina-Space-Gray-1-1GHz-Core-m3-Early-2016-MLH72LL-A-256-GB-SSD-8-Memory-2304x1440-Display-Mac-OS-X-v10-12-Sierra-Powe/395846604?wmlspartner=wlpa&selectedSellerId=5911\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/3895984537714770756?gl=us\",\n", + " \"product_id\": \"3895984537714770756\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=3895984537714770756\",\n", + " \"number_of_comparisons\": \"5+\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/3895984537714770756/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:12948714237030005420_0,pid:2622870768707932419,rsk:PC_8068165826623957145&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECMMU\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A12948714237030005420_0%2Cpid%3A2622870768707932419%2Crsk%3APC_8068165826623957145&gl=us&hl=en&offers=1&product_id=3895984537714770756&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECMMU\",\n", + " \"source\": \"Walmart - CTS Warehouse\",\n", + " \"price\": \"$343.00\",\n", + " \"extracted_price\": 343.0,\n", + " \"rating\": 4.7,\n", + " \"reviews\": 5571,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcS9SO_pelBNOU5JRLv2t05NtCt0gV9ngZk1hO5_4YGXhMTI4G1TetAY8h9buRQyotNeF2OiuN7AiZzSjsHTDIsbxJSL-u8J6r3Z1vF_t-97qzaK5twgxqp1nw&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\"\n", + " },\n", + " {\n", + " \"position\": 15,\n", + " \"title\": \"Refurbished 14-inch MacBook Pro Apple M3 Chip with 8\\u2010Core CPU and 10\\u2010Core GPU ...\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/FR7K3?cid=aos-us-seo-pla-refurb_mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/11035934750651533945?gl=us\",\n", + " \"product_id\": \"11035934750651533945\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=11035934750651533945\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$1,529.00\",\n", + " \"extracted_price\": 1529.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"rating\": 4.8,\n", + " \"reviews\": 2549,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcS3u-vV6-BXTbNRBN2uz8etDnK7tiL4RoAGew8u5-SrmVgv8UpCW29tMZzRAdlSg1ikvOs122jW9jeY-Bqbue_AAjIuoaTYRVe7az-jpnrty6YKLF8xJahJ&usqp=CAE\",\n", + " \"delivery\": \"Free delivery & Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 16,\n", + " \"title\": \"Apple - MacBook Pro 14\\\" Laptop - M3 Pro chip - 18GB Memory - 18-core GPU - 1TB ...\",\n", + " \"link\": \"https://www.bestbuy.com/site/apple-macbook-pro-14-laptop-m3-pro-chip-18gb-memory-18-core-gpu-1tb-ssd-latest-model-silver/6534623.p?skuId=6534623&utm_source=feed\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:16112831514292596016\",\n", + " \"product_id\": \"16112831514292596016\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=16112831514292596016\",\n", + " \"source\": \"Best Buy\",\n", + " \"price\": \"$2,199.00\",\n", + " \"extracted_price\": 2199.0,\n", + " \"old_price\": \"$2,399.00\",\n", + " \"extracted_old_price\": 2399.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"120Hz\",\n", + " \"SALE\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcRj6BREmZVmMSUo2my1GK_OGxVfNsDOLGSFKsVyg8GmzhyNlhe60NgSGlh98QG3luQq9rO0v1NIhWEwbtxWIat0ksi4KTL4P7Cgp-Sv3cuyU6ZzQqmNQWxBwA&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery by Mar 25 & Free 15-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 830\n", + " },\n", + " {\n", + " \"position\": 17,\n", + " \"title\": \"Apple MacBook Pro 14.2\\\" (2023) - Space Grey (Apple M3 Pro / 512GB SSD / 8GB RAM ...\",\n", + " \"link\": \"https://swiftronicsinc.com/products/apple-macbook-pro-14-2-m3-pro?variant=47575313252646¤cy=USD&utm_medium=product_sync&utm_source=google&utm_content=sag_organic&utm_campaign=sag_organic&srsltid=AfmBOorx_LDEPdU44njRgqQm3RhnBboC8NNK3PBV0B_twgDWCJ3KkvDgH6A&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:14882867149942338317\",\n", + " \"product_id\": \"14882867149942338317\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=14882867149942338317\",\n", + " \"source\": \"Swiftronics USA\",\n", + " \"price\": \"$1,519.99\",\n", + " \"extracted_price\": 1519.99,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"HDMI\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcSv7Bj4lI7_yn24vRB-Ci1fYZwfEZ15wrR49uIKSi0ozDZXiXRk1SEOvhQUP8CM-WfV1_6x_QSUc_LCWJ1zitRcO-mn0g91KGTY0qBnJA4&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Tue, Apr 2\"\n", + " },\n", + " {\n", + " \"position\": 18,\n", + " \"title\": \"14\\\" Apple Macbook Pro M3 Pro 18gb Ram 512gb Ssd 2023 - Space Black -\",\n", + " \"link\": \"https://www.ebay.com/itm/296259709817?chn=ps&mkevt=1&mkcid=28&srsltid=AfmBOorw5M_Rm2j1OqwmgrZtItofzm-Pmaevcw1v1ATDHVcBs4lkK-R7SmU&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:9745459672948904496\",\n", + " \"product_id\": \"9745459672948904496\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=9745459672948904496\",\n", + " \"source\": \"eBay - goroostr\",\n", + " \"price\": \"$1,779.99\",\n", + " \"extracted_price\": 1779.99,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"rating\": 4.8,\n", + " \"reviews\": 2549,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcSHZaJR9X_jxXa4phHCMU_bTQtw9pNCiAvCYMbspE859TMwEhQ5q4R1tmJhKwnqdDMHg8AB5ySOa97ZVSwlVBDoRvI-9sZBI_eJE7qxIetGilaaR6bnlUW5&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 25 & Free 30-day returns\"\n", + " },\n", + " {\n", + " \"position\": 19,\n", + " \"title\": \"Apple 13-inch MacBook Air with M3 chip - Midnight\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/MRXW3?cid=aos-us-seo-pla-mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:10051982093045661673\",\n", + " \"product_id\": \"10051982093045661673\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=10051982093045661673\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$1,299.00\",\n", + " \"extracted_price\": 1299.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"SAME-DAY DELIVERY\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcTeAkiKcICmi9jKQ4PxHeO-2siw_BKhrO6IZjUjoYxILIWkXP-boHbJ21dznUmbndDvUe9ro1cgQ6crS8N-0UrwmTgmxvkrDSlEvMl8xF9_aUOpSpAnJDpw&usqp=CAE\",\n", + " \"tag\": \"SAME-DAY DELIVERY\",\n", + " \"delivery\": \"7.1 mi \\u00b7 In stock \\u00b7 Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 20,\n", + " \"title\": \"Apple 14\\\" MacBook Pro (M3 Max, Space Black) with Apple M3 Max 14-Core 36GB ...\",\n", + " \"link\": \"https://www.bhphotovideo.com/c/product/1793796-REG/f2_ul_apple_mbp14m326sb_14_macbook_pro_m3.html?kw=APMBP14M326B&ap=y&smp=y&BI=E6540&srsltid=AfmBOoqQm0ZbFcalkSxWVULepTRovQZtYfswcumTQDj6uwkr_OEuUATZEiE\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:15874402044850433958\",\n", + " \"product_id\": \"15874402044850433958\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=15874402044850433958\",\n", + " \"source\": \"B&H Photo-Video-Audio\",\n", + " \"price\": \"$2,999.00\",\n", + " \"extracted_price\": 2999.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Quad Core\",\n", + " \"USB-C\",\n", + " \"FREE 1-DAY\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcQ349WY8OShwm02vbB3hW7LdiL4dJ6N-EBJfVExmP8bE1fWngljCFdw9s8rjx6sFAhTKo9nK1EAx3QUiUTDq-mX3iXlvSQFfR8LQvboouo&usqp=CAE\",\n", + " \"tag\": \"FREE 1-DAY\",\n", + " \"delivery\": \"Free delivery by tomorrow\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 54400\n", + " },\n", + " {\n", + " \"position\": 21,\n", + " \"title\": \"Apple MacBook Pro 16.2\\\" with M3 Max Chip (Late 2023) Space Black 16-Core / 40 ...\",\n", + " \"link\": \"https://www.amazon.com/Apple-MacBook-16-2-Chip-Late/dp/B0CRJ1FSKS?source=ps-sl-shoppingads-lpcontext&ref_=fplfs&psc=1&smid=A17MC6HOH9AVE6\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/18301960115504895473?gl=us\",\n", + " \"product_id\": \"18301960115504895473\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=18301960115504895473\",\n", + " \"number_of_comparisons\": \"3\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/18301960115504895473/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:8186142401868520264_0,pid:5429525408790468648,rsk:PC_16974596778817081448&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECNYV\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A8186142401868520264_0%2Cpid%3A5429525408790468648%2Crsk%3APC_16974596778817081448&gl=us&hl=en&offers=1&product_id=18301960115504895473&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECNYV\",\n", + " \"source\": \"Amazon.com - Seller\",\n", + " \"price\": \"$5,999.00\",\n", + " \"extracted_price\": 5999.0,\n", + " \"rating\": 4.8,\n", + " \"reviews\": 1783,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"60Hz\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcToWgvz-1cdWg4XomKjF5Rt48KKOD0HiBKjhu8714av_fbDidLTibQbGmNMGKSuviedMnGJSOyNCSU2_iSsSuBMtlCjLUGOeMhMGcQZBpXv&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\"\n", + " },\n", + " {\n", + " \"position\": 22,\n", + " \"title\": \"Apple - MacBook Pro 16\\\" Laptop - M3 Pro chip - 18GB Memory - 18-core GPU - 512GB ...\",\n", + " \"link\": \"https://www.bestbuy.com/site/apple-macbook-pro-16-laptop-m3-pro-chip-18gb-memory-18-core-gpu-512gb-ssd-latest-model-silver/6534619.p?skuId=6534619&utm_source=feed\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:16656948121396567423\",\n", + " \"product_id\": \"16656948121396567423\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=16656948121396567423\",\n", + " \"source\": \"Best Buy\",\n", + " \"price\": \"$2,499.00\",\n", + " \"extracted_price\": 2499.0,\n", + " \"rating\": 4.8,\n", + " \"reviews\": 24,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"120Hz\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcS3Z-ECQdy86R4ury5hEfG3R-UJC2UQa5FTL-z35QO0_22_bAwwj9n6Pv-KPzN96U2EjWKM307o66GegBnwREwcBR8vXcxZeRtyml98gzzG&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 25 & Free 15-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 830\n", + " },\n", + " {\n", + " \"position\": 23,\n", + " \"title\": \"Apple 13\\\" MacBook Air (M3, Midnight) with Apple M3 8-Core Chip 16GB Unified RAM ...\",\n", + " \"link\": \"https://www.bhphotovideo.com/c/product/1815040-REG/apple_mba13m306mn_13_macbook_air_m3.html?kw=APMBA13M306M&ap=y&smp=y&BI=E6540&srsltid=AfmBOoqXbPbQ8qaAZPM_qWRu9A_ZpHs6abEpFWT1M5aRHpkNk5t6N3RzRSQ\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:13418513993089410447\",\n", + " \"product_id\": \"13418513993089410447\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=13418513993089410447\",\n", + " \"source\": \"B&H Photo-Video-Audio\",\n", + " \"price\": \"$1,299.00\",\n", + " \"extracted_price\": 1299.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcSUEGf9LjKqp-Q5ZkovglT2YRc6RlaBNczY3f_RR7yi4umS5qG5ZFwBrjxISB6i-auvpja3lSGreNi4MWeEoxSIGyBb2lYmpLgf7xxqBLPh&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 54400\n", + " },\n", + " {\n", + " \"position\": 24,\n", + " \"title\": \"Sealed 14\\\" Apple Macbook Pro M3 - 8gb Ram - 512gb Ssd - Late 2023\",\n", + " \"link\": \"https://www.ebay.com/itm/126353086272?chn=ps&mkevt=1&mkcid=28&srsltid=AfmBOoosfeMoKtAF1LC3H1Irvgs_Y_pubeVyDm5x2AFhWNtWLN6MGhOn6a8&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:12810294314689368605\",\n", + " \"product_id\": \"12810294314689368605\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=12810294314689368605\",\n", + " \"source\": \"eBay - goroostr\",\n", + " \"price\": \"$1,391.13\",\n", + " \"extracted_price\": 1391.13,\n", + " \"old_price\": \"$1,599.00\",\n", + " \"extracted_old_price\": 1599.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcS8XU7M_1C2T2ImW5n001TLSjJncse0jadaNj9sg5cupd_7gviFyFk-kLReZ8mJyw8BZH9s1UvXzIhCdrC1c8rQKh8SS8svwzoBs0e9r6TuBbAnXNVVZEJg&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery by Mar 25 & Free 30-day returns\"\n", + " },\n", + " {\n", + " \"position\": 25,\n", + " \"title\": \"Apple 14\\\" MacBook Pro: M3 Pro Chip with 11-core CPU and 14-core GPU, 512GB ...\",\n", + " \"link\": \"https://www.shopaztecs.com/p-16899-apple-14-macbook-pro-m3-pro-chip-with-11-core-cpu-and-14-core-gpu-512gb-space-black.aspx\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:5347901637919255373\",\n", + " \"product_id\": \"5347901637919255373\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=5347901637919255373\",\n", + " \"source\": \"shopaztecs\",\n", + " \"price\": \"$1,849.00\",\n", + " \"extracted_price\": 1849.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcRwqfajAeTXY_dBxcoHEC40NbGezp5zHml6rWVYGZAcZMa96xrDNgjU7ySGfMfpjlsXuIcKPaTvPL_tLHeuqUwHb_KgPUH84cSusRm5Fjwh49tVlPehidTV&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Wed, Mar 27\"\n", + " },\n", + " {\n", + " \"position\": 26,\n", + " \"title\": \"MacBook Early 2016 - M3 - 8GB RAM - 256GB - Rose Gold Laptop - 12 Months Warranty\",\n", + " \"link\": \"https://reebelo.com/collections/apple-macbook-early-2016?color=Rose+Gold&condition=Excellent&storage=256GB&screenSize=12+Inch&ram=8GB&cpu=Intel+Core+M3+1.1GHz&batteryHealth=80&id=1552c&srsltid=AfmBOorIKTSbeFY02HyRiIOX2BjKuO0nZCFZ-amlCQGyzogrbxi6ivPR9kw\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:12063167085442391065\",\n", + " \"product_id\": \"12063167085442391065\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=12063167085442391065\",\n", + " \"source\": \"Reebelo USA\",\n", + " \"price\": \"$293.97\",\n", + " \"extracted_price\": 293.97,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Intel CPU\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcQU-DE6Y29jlSEixu9BSBZsG4bW42qtAD4KBE8Wmh5wtz183aEUVd9VIz0E8tUzomAf3wha-I-dbs7UhfrwGzpLR5W4kJ5pMrPnalBZ1BlOOaFjDvWu0iryHg&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 21 & Free 30-day returns\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 2400\n", + " },\n", + " {\n", + " \"position\": 27,\n", + " \"title\": \"14-inch MacBook Pro M3 8-Core 8GB RAM\",\n", + " \"link\": \"https://www.uclastore.com/14-inch-MacBook-Pro-M3-8-Core?srsltid=AfmBOopuqbW-_1nCdjKXmJ4aUk7z9sSTtKJxFmOzrg7MftOPhBAwEx2TKDs\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:4609329501472363589\",\n", + " \"product_id\": \"4609329501472363589\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=4609329501472363589\",\n", + " \"source\": \"UCLA Store\",\n", + " \"price\": \"$1,499.00\",\n", + " \"extracted_price\": 1499.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcROpmAh7S0g4rLBWypSQIZJSWHouoIw9XORepYriTW2e0o_D4_GMoQx13Jo84rOxtrIU0066a8reHdkimw7hyCX_aVz2fCXfcsZn4aUpaKj3FX7Qt_7flW6&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Mon, Mar 25\"\n", + " },\n", + " {\n", + " \"position\": 28,\n", + " \"title\": \"14-inch MacBook Pro: Apple M3 Max chip with 14?core CPU and 30?core GPU, 1TB SSD ...\",\n", + " \"link\": \"https://www.bkstr.com/tuskegeestore/product/14-inch-macbook-pro--apple-m3-max-chip-with-14-core-cpu-and-30-core-gpu--1tb-ssd---space-black-437310-1\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:10411701955949663943\",\n", + " \"product_id\": \"10411701955949663943\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=10411701955949663943\",\n", + " \"source\": \"Tuskegee University Bookstore\",\n", + " \"price\": \"$2,609.00\",\n", + " \"extracted_price\": 2609.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcT2Pt48S_aaj59zf-oxukmtPZPjplVRXWivEr6MS2TQKYJToaCPpu8ZgwA3M62El8AjVvNArXsOy4TuwmE5SjJb4bvOphliABzm1_aqrShb&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Wed, Mar 27\",\n", + " \"store_rating\": 4.2\n", + " },\n", + " {\n", + " \"position\": 29,\n", + " \"title\": \"Apple 14\\\" MacBook Pro - M3 Chip with 8GB Memory - 512GB SSD - Silver\",\n", + " \"link\": \"https://icuracao.com/default/apple-macbook-pro-14-laptop-mr7j3ll-a-m3-chip-with-8gb-memory-512gb-ssd-silver.html\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:10872438894388220014\",\n", + " \"product_id\": \"10872438894388220014\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=10872438894388220014\",\n", + " \"source\": \"Curacao\",\n", + " \"price\": \"$1,599.00\",\n", + " \"extracted_price\": 1599.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"120Hz\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcTAtQZlBCSZ5pvALgIFkILDCdvV3O5QXejgLkEdIFmOidfeGkpKI16lRLzpCa31olzsneODRbykgzQ12FIrq_wt1XfMPwrvV999aKd83HYSu4e0oL-V50Yk0A&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Sun, Mar 24\"\n", + " },\n", + " {\n", + " \"position\": 30,\n", + " \"title\": \"Apple 2023 Macbook Pro Laptop M3 Chip With 8\\u2010core Cpu, 10\\u2010core Gpu:\",\n", + " \"link\": \"https://www.ebay.com/itm/196106529659?chn=ps&mkevt=1&mkcid=28&srsltid=AfmBOormswk5jkbectoxc-MVeBxEoavSTX-lxlk7jI8MbyS9LNKOz-5M77I&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:3960933436916285281\",\n", + " \"product_id\": \"3960933436916285281\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=3960933436916285281\",\n", + " \"source\": \"eBay - 6ave\",\n", + " \"price\": \"$1,614.95\",\n", + " \"extracted_price\": 1614.95,\n", + " \"old_price\": \"$2,018.99\",\n", + " \"extracted_old_price\": 2018.99,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcQTKCHjvwsuSqwVl0mI8y6ESRvhVz_SXX0_RnSjrXCxaA1KmOM38R6LJcLiVSf27IPb_jgzFk8jPNOXqVxOTsY_AVbF3S1RnHUzImvTMgejzKMaP_KAfaNk&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery by Mar 21 & Free 30-day returns\"\n", + " },\n", + " {\n", + " \"position\": 31,\n", + " \"title\": \"Apple MacBook Pro 2023 M3 Pro 18GB RAM - Certified Used Refurbished at UpTrade\",\n", + " \"link\": \"https://uptradeit.com/buy-used-refurbished-macbook-pro-2023-m3-pro-18gb-ram?srsltid=AfmBOopK5kL3cLC0nDabslldHURINOFPfrX_Qa3SPoPdL5JFv7TmC30LipA\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:18365787801308639919\",\n", + " \"product_id\": \"18365787801308639919\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=18365787801308639919\",\n", + " \"source\": \"UpTrade\",\n", + " \"price\": \"$1,789.00\",\n", + " \"extracted_price\": 1789.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"extensions\": [\n", + " \"Mac OS\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcQBqlnVos62vKKY5Zl3Exb30B54gctoIXW6Kl4J7kDwsUldyTvkNgLJFHgeIEp5OURQJtiyGwwV5-NtEvq_THD0AJmH4deWbg&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Fri, Mar 29\"\n", + " },\n", + " {\n", + " \"position\": 32,\n", + " \"title\": \"CTO MacBook Pro 16in M3 Pro 1TB 12-Core CPU 18-Core GPU Space Black\",\n", + " \"link\": \"https://www.portableone.com/cto-macbook-pro-16in-m3-pro-1tb-12-core-cpu-18-core-gpu-space-black.html?feed=Froogle\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1828008855676747490?gl=us\",\n", + " \"product_id\": \"1828008855676747490\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=1828008855676747490\",\n", + " \"number_of_comparisons\": \"3\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/1828008855676747490/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:5730027773152920978_0,pid:15202434318315182962,rsk:PC_16974596778817081448&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECJsX\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A5730027773152920978_0%2Cpid%3A15202434318315182962%2Crsk%3APC_16974596778817081448&gl=us&hl=en&offers=1&product_id=1828008855676747490&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECJsX\",\n", + " \"source\": \"PortableOne.com\",\n", + " \"price\": \"$2,699.00\",\n", + " \"extracted_price\": 2699.0,\n", + " \"rating\": 4.8,\n", + " \"reviews\": 1783,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"60Hz\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcR5-ULpTjj8Tg3XI8SLBrYl9z5mU_vgV2qcuTiHXicDwebdfudPmuil6QBbyOAqdTXN8GnXQXjplwCxlwe4Nv8VKEVqHhXQDzkBuV3ZfAmufrBiy20NYcUv&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\"\n", + " },\n", + " {\n", + " \"position\": 33,\n", + " \"title\": \"Refurbished 16-inch MacBook Pro Apple M3 Max Chip with 16\\u2010core CPU and 40\\u2010Core ...\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/G1CM7?cid=aos-us-seo-pla-refurb_mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1806726851984332920?gl=us\",\n", + " \"product_id\": \"1806726851984332920\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=1806726851984332920\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$4,249.00\",\n", + " \"extracted_price\": 4249.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"144Hz\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcT-9626rFKve0aSB6RRtRPESGnBvithUR0zSO57stPqg3riOchkiuujBxnMZV8DXUATW1jaFQd2PEZk0QW0lyjSWU7ZHszJEEzfAETy_pebkdP2rzm8LN4wJw&usqp=CAE\",\n", + " \"delivery\": \"Free delivery & Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 34,\n", + " \"title\": \"Apple MacBook 12\\\" 2304x1440 Retina M3-6Y30 8GB 256GB SSD Mlh72ll/a - Space Gray\",\n", + " \"link\": \"https://reebelo.com/collections/apple-macbook-early-2015?color=Space+Grey&condition=Excellent&storage=256GB&screenSize=12+Inch&ram=8GB&cpu=Intel+Core+M+1.1GHz&batteryHealth=80&id=cb2d2&srsltid=AfmBOopSmd_g855UuT--XFXHgoTvP61T_ml-O0xkP4qd1Ks0BNQXC97YnB8\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/8925059761076400213?gl=us\",\n", + " \"product_id\": \"8925059761076400213\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=8925059761076400213\",\n", + " \"number_of_comparisons\": \"2\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/8925059761076400213/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:14994911620062533527_0,pid:989607520089015478,rsk:PC_13569773647089181821&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECMgX\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A14994911620062533527_0%2Cpid%3A989607520089015478%2Crsk%3APC_13569773647089181821&gl=us&hl=en&offers=1&product_id=8925059761076400213&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECMgX\",\n", + " \"source\": \"Reebelo USA\",\n", + " \"price\": \"$303.97\",\n", + " \"extracted_price\": 303.97,\n", + " \"rating\": 4.7,\n", + " \"reviews\": 2337,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcRjfAegI_OMT6WnbxUASZ5wau3b3Zy3B_0DZjtC4tmbzvQ7tLGoHe_AbMdvzuhINt3I0ZOVoWXD-EUPi-7ildEaJeyaVqPH5xmrZPQ0Vg-q9d8cgKW88OFgHQ&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 21 & Free 30-day returns\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 2400\n", + " },\n", + " {\n", + " \"position\": 35,\n", + " \"title\": \"Apple 14-inch MacBook Pro (M3, 2023)\",\n", + " \"link\": \"https://melrosemac.com/apple-macbookpro-142-m3?srsltid=AfmBOop76idZf29k_sZu4hp6SVNo0DZpGOcW_8NURhM3ViW7IWsZOyWjVa8\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:2583076737267059933\",\n", + " \"product_id\": \"2583076737267059933\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=2583076737267059933\",\n", + " \"source\": \"MelroseMAC\",\n", + " \"price\": \"$1,599.00\",\n", + " \"extracted_price\": 1599.0,\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcTx4xEq0_b7_yibZ-J20x7rM9XQHHKVLhxpqrprLbYQXyFVGg2XhPkNv3ASAH5zIYCTcbPGs2tJxIWi2bOOyKvoUySCL8Nt&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Fri, Mar 22\"\n", + " },\n", + " {\n", + " \"position\": 36,\n", + " \"title\": \"Apple 14 MacBook Pro M3 Max - 1TB 14 Laptop with M3 Max Chip, 14-Core CPU and 30 ...\",\n", + " \"link\": \"https://www.fullcompass.com/prod/627591-apple-14-macbook-pro-m3-max-1tb-14-laptop-with-m3-max-chip-14-core-cpu-and-30-core-gpu-1tb-ssd\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:2847701851226302210\",\n", + " \"product_id\": \"2847701851226302210\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=2847701851226302210\",\n", + " \"source\": \"Full Compass Systems\",\n", + " \"price\": \"$3,199.00\",\n", + " \"extracted_price\": 3199.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcT2oy9t1DnrajPAxxWLeLK9ptVYMAmrKNht-0xG0XKHVLlT41dIwFPlfarK01isYKVbwavlpviEJ4EYYLOa8KF7kaDTVbJfjNg6RTMqwtFs2zPurI-daQh3Ew&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mon, Mar 25\",\n", + " \"store_rating\": 4.4,\n", + " \"store_reviews\": 1400\n", + " },\n", + " {\n", + " \"position\": 37,\n", + " \"title\": \"Apple MacBook Retina Core M3 1.1GHz 8GB 256GB SSD 12 inch -Used, Size: 12 in\",\n", + " \"link\": \"https://stock4less.com/products/apple-macbook-retina-core-m3-1-1ghz-8gb-256gb-ssd-12-rose-gold-2016?variant=46033249927471¤cy=USD&utm_medium=product_sync&utm_source=google&utm_content=sag_organic&utm_campaign=sag_organic&srsltid=AfmBOooe9vjjD7iEmM2Vvk5lmOL1iAzPmYjYr107rb5oO8UZk_PIKzuI-JU&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/3155976792905161698?gl=us\",\n", + " \"product_id\": \"3155976792905161698\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=3155976792905161698\",\n", + " \"source\": \"Stock4Less.com\",\n", + " \"price\": \"$590.00\",\n", + " \"extracted_price\": 590.0,\n", + " \"old_price\": \"$890.00\",\n", + " \"extracted_old_price\": 890.0,\n", + " \"rating\": 4.7,\n", + " \"reviews\": 6157,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcQmQHqjKaUwmSm0PZTMsu3owDX0-UC6PmvUt2sNai1kXTen8IqxOLvvhmfBFj8NSdoPQc8DywmWPKf3F3C4GB3egi5dTUZpsA&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Delivery by Thu, Mar 28\"\n", + " },\n", + " {\n", + " \"position\": 38,\n", + " \"title\": \"Apple 2023 MacBook Pro M3 Pro - Electronics | Color: Grey\",\n", + " \"link\": \"https://www.mercari.com/us/item/m74675857518/?srsltid=AfmBOoqFtK5k_lXt3U9Hwr1zk-7CttrU9NFvpUbH4GiPUvXJ6L-QJSzK5gE&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:14830863460115127348\",\n", + " \"product_id\": \"14830863460115127348\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=14830863460115127348\",\n", + " \"source\": \"Mercari\",\n", + " \"price\": \"$1,900.00\",\n", + " \"extracted_price\": 1900.0,\n", + " \"old_price\": \"$2,000.00\",\n", + " \"extracted_old_price\": 2000.0,\n", + " \"second_hand_condition\": \"used\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Gray\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcSbBPMpdDcLOE2R9f1M39kqGFLgLmJWIjeBVVTXjCY7ww0H_HsQd_LE0kl4KjtTmoA-1O0lsuJ1fmBSaXnkBS_WcSws-SStjzi1lfyGBvRO&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"$16.71 delivery\"\n", + " },\n", + " {\n", + " \"position\": 39,\n", + " \"title\": \"Apple 13\\\" MacBook Air (M3, Space Gray) with Apple M3 8-Core Chip 16GB Unified RAM ...\",\n", + " \"link\": \"https://www.bhphotovideo.com/c/product/1815041-REG/apple_mba13m306sg_13_macbook_air_m3.html?kw=APMA13M306SG&ap=y&smp=y&BI=E6540&srsltid=AfmBOoosTbGcu0dBTdfZ39stauCz0vfx6cn2COnVKSLRSOMWyDJBJLmRKg8\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:14806433500968289725\",\n", + " \"product_id\": \"14806433500968289725\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=14806433500968289725\",\n", + " \"source\": \"B&H Photo-Video-Audio\",\n", + " \"price\": \"$1,299.00\",\n", + " \"extracted_price\": 1299.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcTRmWVLB85wll-mVHix0Yk9Htg6gcDBlcU3LuJPnbjlkco8p3GeIMDOjJCFm2rD5_NJ6hgmRB40fXkqfZ5QWqwIiQFSSmNLnmOc40ZlIrU&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\",\n", + " \"store_rating\": 4.8,\n", + " \"store_reviews\": 54400\n", + " },\n", + " {\n", + " \"position\": 40,\n", + " \"title\": \"Apple MacBook 12 inch Core M3 1.10GHz 8GB Ram 256GB SSD -Used\",\n", + " \"link\": \"https://www.shop.com/Apple+Macbook+2017+12+2304X1440+M3+7y32+8+256Gb+Ssd+Mnyf2ll+a+Space+Gray+Open+Box-1982854409-p+.xhtml?fg=1&srsltid=AfmBOoryjy7q55_UVZLWPL7cmWrJvEFj0Lf0C_U5colkDnFHvdRhzCnLJOQ\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/66062403677311135?gl=us\",\n", + " \"product_id\": \"66062403677311135\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=66062403677311135\",\n", + " \"number_of_comparisons\": \"5+\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/66062403677311135/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:11419448472539582786_0,pid:2954461788415520449,rsk:PC_15955668845582434919&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECLgY\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A11419448472539582786_0%2Cpid%3A2954461788415520449%2Crsk%3APC_15955668845582434919&gl=us&hl=en&offers=1&product_id=66062403677311135&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECLgY\",\n", + " \"source\": \"shop.com/retailking-v291508-c+.xhtml\",\n", + " \"price\": \"$522.68\",\n", + " \"extracted_price\": 522.68,\n", + " \"old_price\": \"$784.02\",\n", + " \"extracted_old_price\": 784.02,\n", + " \"second_hand_condition\": \"used\",\n", + " \"rating\": 4.7,\n", + " \"reviews\": 7372,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcQDYLvXd1iRrrtOQYae1NkdSDhOKiiRsfVWmWdo8sqYvFx1vQ2dYUGvlEVl1MjcpEm0TZ4Dfu9Soy6BxfSAeVfPS_u-bcPRHQ&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery\"\n", + " },\n", + " {\n", + " \"position\": 41,\n", + " \"title\": \"Apple Macbook Pro 14\\\" (512gb Ssd, Apple M3, 8-core, 8gb) Laptop -\",\n", + " \"link\": \"https://www.ebay.com/itm/166621469612?chn=ps&mkevt=1&mkcid=28&srsltid=AfmBOopSOnCrwwUbjxshLeqUhhfa5LGTdPZ8JleHgjrBM9nWDEmIef97PxQ&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:18259247221573934077\",\n", + " \"product_id\": \"18259247221573934077\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=18259247221573934077\",\n", + " \"source\": \"eBay - alldayzip\",\n", + " \"price\": \"$1,529.00\",\n", + " \"extracted_price\": 1529.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcT54-lj-ba2XPysMuic5Tz7-8M30517aQaLkNkkLOwCscQW9JciqR3X42GavONJU4XD6LGQ9gZ1yGUPhMXPW_7nLHwsrZYHBB5wnDza4Gc&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mar 22 & Free 30-day returns\"\n", + " },\n", + " {\n", + " \"position\": 42,\n", + " \"title\": \"MacBook Pro M3 Pro 14-inch - 18GB RAM, 1TB SSD - Silver - Apple\",\n", + " \"link\": \"https://www.apple.com/us/shop/go/product/MRX73?cid=aos-us-seo-pla-mac\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:1893859740156862207\",\n", + " \"product_id\": \"1893859740156862207\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=1893859740156862207\",\n", + " \"source\": \"Apple\",\n", + " \"price\": \"$2,399.00\",\n", + " \"extracted_price\": 2399.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Silver\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcTxCnz3UTLlWycWB9RKa53E8KDr9m7IY41fW5MxtcO8KBe_ILgfyopZXvnDv_6RCpeVL6gEtu_yThwopsqUzhbDdmv08p-GbxP5xdg4MpXPS8cLMNNVKD55&usqp=CAE\",\n", + " \"delivery\": \"Free delivery & Free 14-day returns\",\n", + " \"store_rating\": 4.6,\n", + " \"store_reviews\": 6600\n", + " },\n", + " {\n", + " \"position\": 43,\n", + " \"title\": \"Recertified - Apple MacBook Core M3 1.2GHz 8GB Ram 256GB SSD 12\\\" Gold Mnyk2ll/a ...\",\n", + " \"link\": \"https://www.newegg.com/p/2SN-0001-017R1?item=9SIA7WPC2T9416&nm_mc=knc-googleadwords&cm_mmc=knc-googleadwords-_-mac+-+notebooks-_-apple-_-9SIA7WPC2T9416&utm_source=google&utm_medium=organic+shopping&utm_campaign=knc-googleadwords-_-mac+-+notebooks-_-apple-_-9SIA7WPC2T9416&source=region&srsltid=AfmBOopYWqbhaauk6V2CN9ezNiVIOJgP8bZssBJ5T0_y8l5aRRr12-aE7eQ&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/6717347531979442654?gl=us\",\n", + " \"product_id\": \"6717347531979442654\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=6717347531979442654\",\n", + " \"number_of_comparisons\": \"2\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/6717347531979442654/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:17803962570920659338_0,pid:11074569263940106350,rsk:PC_15955668845582434919&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECPEY\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A17803962570920659338_0%2Cpid%3A11074569263940106350%2Crsk%3APC_15955668845582434919&gl=us&hl=en&offers=1&product_id=6717347531979442654&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECPEY\",\n", + " \"source\": \"Newegg.com - TekReplay\",\n", + " \"price\": \"$359.97\",\n", + " \"extracted_price\": 359.97,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"rating\": 4.7,\n", + " \"reviews\": 7372,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Gold\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcS1dPCwfoIMq0QS7A2Vu0GUNqWUwJIT5lj5BvA-sswPbttYerwjidMdvGns2uBsiWAoOkaFYF7fhCzbql4HG76nxeScpVRn3l6Z7eAM6hGR1syGeOJYyt524g&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\"\n", + " },\n", + " {\n", + " \"position\": 44,\n", + " \"title\": \"Apple 2017 MacBook 12 in. Core M3 1.2GHz 8GB Ram 256GB SSD Gold (MNYK2LL/A)\",\n", + " \"link\": \"https://dailysteals.com/products/apple-macbook-12-with-intel-core-m3-8gb-ram-256gb-ssd.html?sku=SKU5138670&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/7247485303816983938?gl=us\",\n", + " \"product_id\": \"7247485303816983938\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=7247485303816983938\",\n", + " \"number_of_comparisons\": \"3\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/7247485303816983938/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:13317841184962820692_0,pid:12366169195241912554,rsk:PC_13569773647089181821&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECIkZ\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A13317841184962820692_0%2Cpid%3A12366169195241912554%2Crsk%3APC_13569773647089181821&gl=us&hl=en&offers=1&product_id=7247485303816983938&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECIkZ\",\n", + " \"source\": \"DailySteals\",\n", + " \"price\": \"$349.99\",\n", + " \"extracted_price\": 349.99,\n", + " \"old_price\": \"$1,299.00\",\n", + " \"extracted_old_price\": 1299.0,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"rating\": 4.7,\n", + " \"reviews\": 2337,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcQMpQC_4UEfACgZNOqwq9dQ9XEeS9fainX1DpJhlAIqjx3lar41xu4mXEQgcJg1MKR3kwecjBKUMaNMWJ9HWx9-8q_fRIZqFTmvvJGcYt7z&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery\",\n", + " \"store_rating\": 3.8,\n", + " \"store_reviews\": 1600\n", + " },\n", + " {\n", + " \"position\": 45,\n", + " \"title\": \"14\\\" Apple Macbook Pro M3 - 8gb Ram 512gb Ssd - Late 2023 - Apple\",\n", + " \"link\": \"https://www.ebay.com/itm/315212515129?chn=ps&mkevt=1&mkcid=28&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:5714128535931382561\",\n", + " \"product_id\": \"5714128535931382561\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=5714128535931382561\",\n", + " \"source\": \"eBay\",\n", + " \"price\": \"$1,399.00\",\n", + " \"extracted_price\": 1399.0,\n", + " \"second_hand_condition\": \"used\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Gray\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcReWeD3BwA3eaxYOxSqWjjLhyAdkai_i_jcMa6-iq4htJAlt72fIcdMOxEXRFeBsgs9fCb0IydKuq7BrxE5UXObNYkyWnAE5RC7SqkEInws&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Wed, Mar 27\"\n", + " },\n", + " {\n", + " \"position\": 46,\n", + " \"title\": \"Apple MacBook Pro 14-inch M3 with 8-Core CPU and 10-Core GPU (Late 2023)\",\n", + " \"link\": \"https://www.macofalltrades.com/apple-macbook-pro-14-inch-m3-with-8-core-cpu-and-10-core-gpu-late-2023/?sku=MBP-14-M3-L23RSG-16512-10C-A&?setCurrencyId=1&srsltid=AfmBOopTdhk3pCceuwPg3sPoon5FX4WW7cqRrYl2I6aqD0YoxcIYAcl5fR8\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:4514865831164164656\",\n", + " \"product_id\": \"4514865831164164656\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=4514865831164164656\",\n", + " \"source\": \"Mac of All Trades\",\n", + " \"price\": \"$1,724.99\",\n", + " \"extracted_price\": 1724.99,\n", + " \"second_hand_condition\": \"refurbished\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"USB-C\",\n", + " \"Apply TAKE10OFF\",\n", + " \"$10 OFF\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcSHMEqG97BWhCmK8xiYB6Zz8WiFIUxJAj-5EmqUfHDGje1JlyQONgwY7pKzUMe2Az1SfKyNLO6Ft-uxTP_7te0RueE5a0n2MK71p6BSw-mo3IsttKJ2REAS&usqp=CAE\",\n", + " \"tag\": \"$10 OFF\",\n", + " \"delivery\": \"Free delivery by Mon, Mar 25\",\n", + " \"store_rating\": 4.9,\n", + " \"store_reviews\": 17\n", + " },\n", + " {\n", + " \"position\": 47,\n", + " \"title\": \"Apple MacBook 12\\\", Intel Core m3 Dual-Core, 8GB RAM, 256GB SSD, Gold\",\n", + " \"link\": \"https://www.invastor.com/product/15930332-Apple-12--MacBook--Late-2018--Gold--256GB-SSD---OPEN-BOX-\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/8185831602979719817?gl=us\",\n", + " \"product_id\": \"8185831602979719817\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=8185831602979719817\",\n", + " \"number_of_comparisons\": \"4\",\n", + " \"comparison_link\": \"https://www.google.com/shopping/product/8185831602979719817/offers?q=Macbook+M3&gl=us&hl=en&prds=eto:15706322453763710117_0,pid:18355140504630075462,rsk:PC_10829927869450591325&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECMgZ\",\n", + " \"serpapi_product_api_comparisons\": \"https://serpapi.com/search.json?engine=google_product&filter=eto%3A15706322453763710117_0%2Cpid%3A18355140504630075462%2Crsk%3APC_10829927869450591325&gl=us&hl=en&offers=1&product_id=8185831602979719817&sa=X&ved=0ahUKEwilj_bB3v2EAxUzD1kFHdQOAOoQ3q4ECMgZ\",\n", + " \"source\": \"InVastor.com\",\n", + " \"price\": \"$1,049.95\",\n", + " \"extracted_price\": 1049.95,\n", + " \"rating\": 4.5,\n", + " \"reviews\": 115,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcRI4s9I4_YIQ9PZlMtYH-H8IbXFsoODq3a3QO4eXixwnfpMHTRk1wAVACgDulAZY_rI9XazNL1LaRot_qyvGCmKIt_shV6vT5I8NPaag7zbIbUvaSnwy-Y-&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Thu, Mar 21 \\u00b7 Free 30-day returns\"\n", + " },\n", + " {\n", + " \"position\": 48,\n", + " \"title\": \"Apple 16-inch MacBook Pro M3 Max 14-Core, 36GB RAM, 1TB Flash, 30-Core GPU, Space ...\",\n", + " \"link\": \"https://ipowerresale.com/products/apple-16-inch-macbook-pro-m3-max-14-core-36gb-ram-1tb-flash-30-core-gpu-space-black-grade-b?variant=43612719841449¤cy=USD&utm_medium=product_sync&utm_source=google&utm_content=sag_organic&utm_campaign=sag_organic&srsltid=AfmBOoo1gkMTIzozxGEW6HJAqiacCi2vW5ZkM7qEz3D59iMYuXipOW9JvqM&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:10692554146986164911\",\n", + " \"product_id\": \"10692554146986164911\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=10692554146986164911\",\n", + " \"source\": \"ipowerresale\",\n", + " \"price\": \"$3,037.02\",\n", + " \"extracted_price\": 3037.02,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Black\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcRdrmGjhS2B7SqNhQXWd2DJDqX1HPbn2WNmjZpnniDa_yucCLac0hSZpTlJfnWgyjsNBMusI8twVZWZ6zziaQnEE9I71VPv_TNzjQCgBQCkNS6Gs1zFfYtVPA&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Wed, Mar 27\",\n", + " \"store_rating\": 4.9,\n", + " \"store_reviews\": 155\n", + " },\n", + " {\n", + " \"position\": 49,\n", + " \"title\": \"Apple MacBook Pro 14 M3 Pro 12cpu 18gpu/18gb/1tb SSD Silver Spanish QWERTY MRX73Y/A\",\n", + " \"link\": \"https://www.tradeinn.com/techinn/en/apple-macbook-pro-14-m3-pro-12cpu-18gpu-18gb-1tb-ssd/140496255/p?utm_source=google_products&utm_medium=merchant&id_producte=141792983&country=us&srsltid=AfmBOoolTO1ogyDQgadiD_-ueBjUd3gNbyKr6JwjsxjFOvhTdm9yzZGSwVM\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/6245787311379678243?gl=us\",\n", + " \"product_id\": \"6245787311379678243\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=6245787311379678243\",\n", + " \"source\": \"Techinn.com\",\n", + " \"price\": \"$2,756.99\",\n", + " \"extracted_price\": 2756.99,\n", + " \"rating\": 4.8,\n", + " \"reviews\": 2549,\n", + " \"extensions\": [\n", + " \"Touchscreen\",\n", + " \"Mac OS\",\n", + " \"HDMI\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcRaAJrhh7DnBeWSyH0DuPaI4OsiaUqq2SPhgeNVS9k1nw8rS8ZuLymJDXaiKoi_2kHVLDoghKKVmd6TLOaIn4mIZ1_aP3oC3xJPkkeU8LTpO9cFJtXECKdZ&usqp=CAE\",\n", + " \"delivery\": \"$50.99 delivery\"\n", + " },\n", + " {\n", + " \"position\": 50,\n", + " \"title\": \"Apple MacBook Retina Core M3 1.1GHz 8GB 480GB SSD 12 inch (Rose Gold)MMGL2LLA ...\",\n", + " \"link\": \"https://stock4less.com/products/apple-macbook-retina-core-m3-1-1ghz-8gb-480gb-ssd-12-rose-gold-2016?currency=USD&variant=46049109377327&utm_medium=cpc&utm_source=google&utm_campaign=Google%20Shopping&stkn=c560d42fd077&srsltid=AfmBOoqTei0d9SCf8nqKpysawv_9Mt1yrcUsYZiKhzTqAO1L0cVAvs1EKwM\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/5115890542106889715?gl=us\",\n", + " \"product_id\": \"5115890542106889715\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=5115890542106889715\",\n", + " \"source\": \"Stock4Less.com\",\n", + " \"price\": \"$580.00\",\n", + " \"extracted_price\": 580.0,\n", + " \"rating\": 4.7,\n", + " \"reviews\": 7372,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcR0sWzaSYljPg1jjFVF8YTV3wpgJxwfG1xl8UDpL691NlIkyITsA0b8ugXYFd9kMmDAKS3lrj5vOH9BG9oqYwpNYyB2NMAoKUuL3pppqPMN&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Thu, Mar 28\"\n", + " },\n", + " {\n", + " \"position\": 51,\n", + " \"title\": \"Apple - MacBook Pro - 16 - M3 Max - 36 GB RAM - 1 TB SSD - Space Black\",\n", + " \"link\": \"https://www.cdw.com/product/apple-macbook-pro-16-m3-max-36-gb-ram-1-tb-ssd-space-black/7667567?cm_ven=acquirgy&cm_cat=google&cm_pla=NA-NA-Apple_NM&cm_ite=7667567\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:14676483733708805158\",\n", + " \"product_id\": \"14676483733708805158\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=14676483733708805158\",\n", + " \"source\": \"CDW\",\n", + " \"price\": \"$3,542.99\",\n", + " \"extracted_price\": 3542.99,\n", + " \"rating\": 4.8,\n", + " \"reviews\": 1783,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"HDMI\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcSKsmtZij22jrHkgIjRwLxBFXDNo1tnjJ3UdwCyoW-WSphAxSENTZEZRQQ5OFKZ7TMRtOlXtby92F3HkPgeKX6eMNu824NQoVCyWmo1sBloIZ_cb9zk7_Hi0g&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Thu, Mar 21\",\n", + " \"store_rating\": 4.3,\n", + " \"store_reviews\": 28\n", + " },\n", + " {\n", + " \"position\": 52,\n", + " \"title\": \"Apple Macbook Pro 14 M3 Pro 11-Core CPU 14-Cor e GPU 512GB ,Silver/Black\",\n", + " \"link\": \"https://www.qvc.com/qvc.product.E320205.html?colorId=R76&sizeId=000&ref=GBA\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:8367211878692106496\",\n", + " \"product_id\": \"8367211878692106496\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=8367211878692106496\",\n", + " \"source\": \"QVC\",\n", + " \"price\": \"$2,769.98\",\n", + " \"extracted_price\": 2769.98,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Silver\",\n", + " \"$15 off over $35. Apply NEW2024\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcRiKNAETS3uvnjlOISnGtDMEOGzZCSJbuUcvUJMOUQJKRiTqn7kfOyn-5kInLLmmSXAZktiD6t2I3G7mpH0SrCXU8A4K4CmmG_Nlrooi-r8HnMcC_1VCGuV&usqp=CAE\",\n", + " \"delivery\": \"$25.97 delivery\",\n", + " \"store_rating\": 4.5,\n", + " \"store_reviews\": 3200\n", + " },\n", + " {\n", + " \"position\": 53,\n", + " \"title\": \"Apple Macbook Pro 14\\\" M3 Pro Chip 18gb Ram 1tb Ssd Silver Mrx73ll/a\",\n", + " \"link\": \"https://www.ebay.com/itm/134844280139?chn=ps&mkevt=1&mkcid=28&srsltid=AfmBOooVTF6YerJJujZP0sAtFZuxBI0aH_E-XS-8TwSgUwSNyRGHjA9IqYM&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:2600057152668657054\",\n", + " \"product_id\": \"2600057152668657054\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=2600057152668657054\",\n", + " \"source\": \"eBay - quickshipelectronics\",\n", + " \"price\": \"$1,899.00\",\n", + " \"extracted_price\": 1899.0,\n", + " \"old_price\": \"$2,399.00\",\n", + " \"extracted_old_price\": 2399.0,\n", + " \"second_hand_condition\": \"used\",\n", + " \"extensions\": [\n", + " \"Touchscreen\",\n", + " \"Mac OS\",\n", + " \"120Hz\",\n", + " \"SALE\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcSBLYZluYbSu-RJePLFJa7lQknGPAYGo9O2ju5ZBg40H6c6D7tQnpc6ZlXiKZYisY6OzLD6jKiSp24QAKiG9vHIW71X2eLxhL1oWJKFvLh_difpw_p1nS4pFg&usqp=CAE\",\n", + " \"tag\": \"SALE\",\n", + " \"delivery\": \"Free delivery & Free 30-day returns\"\n", + " },\n", + " {\n", + " \"position\": 54,\n", + " \"title\": \"14-inch MacBook Pro: Apple M3 chip with 8?core CPU and 10?core GPU, 1TB SSD ...\",\n", + " \"link\": \"https://www.bkstr.com/governorsstatestore/product/14-inch-macbook-pro--apple-m3-chip-with-8-core-cpu-and-10-core-gpu--1tb-ssd---space-gray-830254-1\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:3213253166936533813\",\n", + " \"product_id\": \"3213253166936533813\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=3213253166936533813\",\n", + " \"source\": \"Follett's G.S.U. Bookstore\",\n", + " \"price\": \"$1,699.00\",\n", + " \"extracted_price\": 1699.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Octa Core\",\n", + " \"Gray\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcSnvH4oQAaladCnvB6nKdNeWpLQaYyEwi0KN8E1CCjTlCm-bqoXrnoUhTA1gJxNVgJHzvH_SFoxnDj0TC3Gh-IVZvkBmpfaU_EHJj_ioCw&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Fri, Mar 29\",\n", + " \"store_rating\": 4.2\n", + " },\n", + " {\n", + " \"position\": 55,\n", + " \"title\": \"Apple MacBook M3 Pro (Latest Model) - New Electronics | Color: Silver\",\n", + " \"link\": \"https://www.mercari.com/us/item/m32928882547/?srsltid=AfmBOoqyiaWHGVImHY0MswA8gUXYxvBoBDCgzEKsfqC2t56C5macsA4L5TI&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:14893851346840885072\",\n", + " \"product_id\": \"14893851346840885072\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=14893851346840885072\",\n", + " \"source\": \"Mercari\",\n", + " \"price\": \"$1,977.00\",\n", + " \"extracted_price\": 1977.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Intel CPU\",\n", + " \"Silver\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcRHRM2myWVqBRtoO1EyHpbPt-Z-wx2X70wVP2H-ZkY3MfzEyWzM0uOg7tVICOddbONa0D2CWDaqV7wkyxfcacdVfrmCrq15sHitcf4nQyM&usqp=CAE\",\n", + " \"delivery\": \"$21.60 delivery\"\n", + " },\n", + " {\n", + " \"position\": 56,\n", + " \"title\": \"16\\\" MacBook Pro M3 Max Space Black / 16-Core CPU \\u2022 40-Core GPU \\u202248GB Memory\",\n", + " \"link\": \"https://techmonklabs.com/products/16-macbook-pro-m3-max-save-150-when-you-pre-order-discount-in-cart?variant=44178026037487¤cy=USD&utm_medium=product_sync&utm_source=google&utm_content=sag_organic&utm_campaign=sag_organic&srsltid=AfmBOoo_oh6w8aZoxhZHFW-CiQTQA-7WIhym-wL_cTlAkkrUe3U4lrrz1ME&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:17382815758513163519\",\n", + " \"product_id\": \"17382815758513163519\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=17382815758513163519\",\n", + " \"source\": \"Techmonk Labs\",\n", + " \"price\": \"$3,999.99\",\n", + " \"extracted_price\": 3999.99,\n", + " \"extensions\": [\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcTNprFhC2VrnAl6_5uPurJ9E3-3tpHU22kgmQ3ollEvii772h38fj5xaFSA4aK9oeiQzYM9ZOjNBf6kg-qQJvwfl75hq__9Po0K_X1p2Qk5pyCaNI_Y1em8kg&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Wed, Mar 27\",\n", + " \"store_rating\": 2.2,\n", + " \"store_reviews\": 38\n", + " },\n", + " {\n", + " \"position\": 57,\n", + " \"title\": \"Apple MacBook Pro 14 M3 Pro chip w/11C CPU and 14C GPU, 18GB, 512GB SSD, Silver\",\n", + " \"link\": \"https://www.connection.com/product/apple-macbook-pro-14-m3-pro-chip-w-11c-cpu-and-14c-gpu-18gb-512gb-ssd-silver/mrx63ll-a/41731971\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:7885021814268071541\",\n", + " \"product_id\": \"7885021814268071541\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=7885021814268071541\",\n", + " \"source\": \"Connection\",\n", + " \"price\": \"$1,999.00\",\n", + " \"extracted_price\": 1999.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Silver\"\n", + " ],\n", + " \"badge\": \"Top Quality Store\",\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcSfr3xLBk-HAwGiV7GLeysD9udCECnzmeTzxubbsPPsFf_BmVfjndrTkfPRm9gzcQMA-ll8tSxhOjOG-pScF55AuyFKHgm7LIHSZsutQlOBv4qgtXkTBz34&usqp=CAE\",\n", + " \"delivery\": \"Free delivery\",\n", + " \"store_rating\": 4.5,\n", + " \"store_reviews\": 318\n", + " },\n", + " {\n", + " \"position\": 58,\n", + " \"title\": \"MacBook Pro 2023 M3 14-inch - Certified Pre-Owned Space Gray / 4.05GHz Apple M3 ...\",\n", + " \"link\": \"https://shop.computercave.com/products/macbook-pro-2023-m3-14-inch-certified-pre-owned?variant=42870689005741¤cy=USD&utm_medium=product_sync&utm_source=google&utm_content=sag_organic&utm_campaign=sag_organic&srsltid=AfmBOooKOEPimhtH-bVrx8BBt1UuDDvQFhdBw9l2KInIkxoLZBKo1UnA6TM&com_cvv=d30042528f072ba8a22b19c81250437cd47a2f30330f0ed03551c4efdaf3409e\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:14470723934038144316\",\n", + " \"product_id\": \"14470723934038144316\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=14470723934038144316\",\n", + " \"source\": \"Computer Cave\",\n", + " \"price\": \"$1,699.99\",\n", + " \"extracted_price\": 1699.99,\n", + " \"second_hand_condition\": \"used\",\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Space Gray\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcRoZZPJ8oCe3wvxJMKZKZh3Vq2e4D7oDMOnThhP1nl5YOLKETxW69iNXeRpj7fIuw6hawM-Xs_U2HESxdBX9Ul6vP1ZOoGUXRyoAnr1XbM&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Mon, Mar 25\"\n", + " },\n", + " {\n", + " \"position\": 59,\n", + " \"title\": \"Apple MacBook Retina Core M3 1.2GHz 8GB 480GB SSD 12 inch - Select Your OS-Used ...\",\n", + " \"link\": \"https://stock4less.com/products/apple-macbook-retina-core-m3-1-2ghz-8gb-480gb-ssd-12-space-gray-2017?currency=USD&variant=46049124974895&utm_medium=cpc&utm_source=google&utm_campaign=Google%20Shopping&stkn=c560d42fd077&srsltid=AfmBOoox7LC7fxdUTTPT4uzm56oYRkm_HYrkJu1CkC04zn9jdteyN9lj7Eo\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/9794283002032097491?gl=us\",\n", + " \"product_id\": \"9794283002032097491\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=9794283002032097491\",\n", + " \"source\": \"Stock4Less.com\",\n", + " \"price\": \"$510.00\",\n", + " \"extracted_price\": 510.0,\n", + " \"rating\": 4.7,\n", + " \"reviews\": 7372,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"Dual Core\",\n", + " \"USB-C\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcQPSJ7qDAcckI31nfIZVb0qQ2NLxBUsoPu0atrAFEs9R2w8g7DHh3GNDYxzJwHFbUhNCRA7I-xqTbXQ9RHhyv7NM7AtZZy94lrzg_sD8xzi&usqp=CAE\",\n", + " \"delivery\": \"Delivery by Thu, Mar 28\"\n", + " },\n", + " {\n", + " \"position\": 60,\n", + " \"title\": \"Apple 16 MacBook Pro M3 Pro - 18 RAM - 512GB 16 Laptop with M3 Pro Chip, 18GB RAM ...\",\n", + " \"link\": \"https://www.fullcompass.com/prod/627588-apple-16-macbook-pro-m3-pro-18-ram-512gb-16-laptop-with-m3-pro-chip-18gb-ram-12-core-cpu-and-18-core-gpu-512gb-ssd\",\n", + " \"product_link\": \"https://www.google.com/shopping/product/1?gl=us&prds=pid:11378368728449381542\",\n", + " \"product_id\": \"11378368728449381542\",\n", + " \"serpapi_product_api\": \"https://serpapi.com/search.json?device=desktop&engine=google_product&gl=us&google_domain=google.com&hl=en&product_id=11378368728449381542\",\n", + " \"source\": \"Full Compass Systems\",\n", + " \"price\": \"$2,499.00\",\n", + " \"extracted_price\": 2499.0,\n", + " \"extensions\": [\n", + " \"Mac OS\",\n", + " \"USB-C\",\n", + " \"HDMI\",\n", + " \"Black\"\n", + " ],\n", + " \"thumbnail\": \"https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcS8TXMDjweE8p3U8_lgyXX_eD_GSXyg5XIN6e4vN5yNqjtNprYSnyYlc-av4oETTOduTONjikqMdCg6boZgvYose-PjDQaphvhFlph8M12bbW7L9lIYCVc2&usqp=CAE\",\n", + " \"delivery\": \"Free delivery by Mon, Mar 25\",\n", + " \"store_rating\": 4.4,\n", + " \"store_reviews\": 1400\n", + " }\n", + "]\n" + ] + } + ], + "source": [ + "import json\n", + "pretty_json = json.dumps(shopping_results, indent=4)\n", + "print(pretty_json)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "def search_product(product_keywords):\n", + "\n", + " params = {\n", + " \"engine\": \"google_shopping\",\n", + " \"q\": product_keywords,\n", + " \"api_key\": API_KEY\n", + " }\n", + " search = GoogleSearch(params)\n", + " results = search.get_dict()\n", + " shopping_results = results[\"shopping_results\"][0]\n", + " return json.dumps(shopping_results)\n", + "\n", + "tools = [\n", + " {\n", + " \"type\": \"function\",\n", + " \"function\": {\n", + " \"name\": \"search_product\",\n", + " \"description\": \"search for a product on google shopping, get information like name, price, description etc.\",\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"product_keywords\": {\n", + " \"type\": \"string\",\n", + " \"description\": \"Name or key words of the product to search\",\n", + " },\n", + " },\n", + " \"required\": [\"product_keywords\"],\n", + " },\n", + " }\n", + " },\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "available_functions = {\n", + " \"search_product\": search_product,\n", + "}\n", + "\n", + "def chat_using_function_call(content, tools = tools, available_functions = available_functions, client = client):\n", + " messages = [{\"role\": \"user\", \"content\": content}]\n", + " response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo-0125\",\n", + " messages=messages,\n", + " tools=tools,\n", + " tool_choice=\"auto\", # auto is default, but we'll be explicit\n", + " )\n", + " response_message = response.choices[0].message\n", + " messages.append(response_message) \n", + " tool_calls = response_message.tool_calls\n", + " for tool_call in tool_calls:\n", + " function_name = tool_call.function.name\n", + " function_to_call = available_functions[function_name]\n", + " function_args = json.loads(tool_call.function.arguments)\n", + " function_response = function_to_call(\n", + " product_keywords=function_args.get(\"product_keywords\"),\n", + " )\n", + " print(\"function \" + function_name + \", with arguments \" + str(function_args) + \" called\")\n", + " messages.append(\n", + " {\n", + " \"tool_call_id\": tool_call.id,\n", + " \"role\": \"tool\",\n", + " \"name\": function_name,\n", + " \"content\": function_response,\n", + " }\n", + " )\n", + " final_response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo-0125\",\n", + " messages=messages,\n", + " )\n", + " print(final_response.choices[0].message.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "function search_product, with arguments {'product_keywords': 'Macbook M3'} called\n", + "The price of the Apple 14\" MacBook Pro with M3 8-Core Chip and 8GB Unified RAM is $1,449.00. You can find more details on the product [here](https://www.bhphotovideo.com/c/product/1793630-REG/apple_mtl73ll_a_14_macbook_pro_with.html?kw=APMTL73LLA&ap=y&smp=y&BI=E6540&srsltid=AfmBOopxJGtKB93QRtNQIcVcZ6ExpmkCUFj_tri2hicX0iQ02Jwvegnii78).\n" + ] + } + ], + "source": [ + "chat_using_function_call(\"What is the price of Macbook M3?\", tools = tools)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "function search_product, with arguments {'product_keywords': 'Macbook M3'} called\n", + "function search_product, with arguments {'product_keywords': 'Macbook M2'} called\n", + "The price of the Macbook M3 (Apple 14\" MacBook Pro with M3 8-Core Chip 8GB Unified RAM) is $1,449.00. You can find more details about it [here](https://www.bhphotovideo.com/c/product/1793630-REG/apple_mtl73ll_a_14_macbook_pro_with.html?kw=APMTL73LLA&ap=y&smp=y&BI=E6540&srsltid=AfmBOopxJGtKB93QRtNQIcVcZ6ExpmkCUFj_tri2hicX0iQ02Jwvegnii78).\n", + "\n", + "The price of the Macbook M2 (MacBook Air 15-Inch, M2 8GB RAM 256GB SSD) is $999.00. More details can be found [here](https://www.bestbuy.com/site/apple-macbook-air-15-laptop-m2-chip-8gb-memory-256gb-ssd-midnight/6534606.p?skuId=6534606&utm_source=feed).\n", + "\n", + "Therefore, the Macbook M3 is priced higher than the Macbook M2.\n" + ] + } + ], + "source": [ + "chat_using_function_call(\"Could you help me to compare the price of Macbook M3 and Macbook M2?\", tools = tools)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}