In today’s highly competitive e-commerce landscape, personalized product recommendations are crucial for businesses to attract and retain customers. Machine learning algorithms can help achieve this goal by analyzing customer data and providing recommendations based on their preferences and behavior. In this article, I will explore how to code a product recommendation system using Python and the ChatGPT language model. We will leverage its capabilities to create a recommendation system that can suggest products to customers based on their previous purchases and browsing history.
Video explanation what we are going to code
Although the video demonstrates the execution of ChatGPT within the Tracardi platform, we will not be reproducing this process. Instead, we will examine the coding of the plugin to learn the methodology employed, which we can apply to our own projects.
If you’re interested in using Tracardi for your projects or contributing to its development, you can access its repository on GitHub. Tracardi is an open-source project that allows developers to create highly customizable automation workflows and customer journey maps.
I encourage you to give them at least a github star for sharing how to use ChatGPT in product recommendations.
Getting started
To start using ChatGPT API, you will need to create an account with OpenAI and obtain an API key. The API key will give you access to the GPT-4 language model, which you can then use to generate text in a variety of contexts.
There are multiple pricing models available, each with different capabilities and price points. The pricing is based on the number of tokens you use, with 1,000 tokens roughly equivalent to 750 words.
You don’t need to worry about the price of ChatGPT, as the pricing is quite reasonable for programmers and I have personally used it for a while without paying more than a dollar.
Library installation
The OpenAI API can be accessed through HTTP requests from any programming language using either the official Python bindings. To install the official Python bindings, use the command:
pip install openaipip install openaipip install openai
Enter fullscreen mode Exit fullscreen mode
As I mentioned the API uses API keys for authentication, which can be obtained from the API Keys page. Remember to keep your API key secure and not expose it in any client-side code.
All API requests should include your API key in an Authorization HTTP header as follows:
Authorization: Bearer OPENAI_API_KEYAuthorization: Bearer OPENAI_API_KEYAuthorization: Bearer OPENAI_API_KEY
Enter fullscreen mode Exit fullscreen mode
Requesting organization
For users who belong to multiple organizations, you can pass a header to specify which organization is used for an API request. Usage from these API requests will count against the specified organization’s subscription quota.
Example curl command:
curl https://api.openai.com/v1/models \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "OpenAI-Organization: YOUR_ORG_ID"curl https://api.openai.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "OpenAI-Organization: YOUR_ORG_ID"curl https://api.openai.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "OpenAI-Organization: YOUR_ORG_ID"
Enter fullscreen mode Exit fullscreen mode
Example with the openai Python package:
<span>import</span> <span>os</span><span>import</span> <span>openai</span><span>openai</span><span>.</span><span>organization</span> <span>=</span> <span>"YOUR_ORG_ID"</span><span>openai</span><span>.</span><span>api_key</span> <span>=</span> <span>os</span><span>.</span><span>getenv</span><span>(</span><span>"OPENAI_API_KEY"</span><span>)</span><span>openai</span><span>.</span><span>Model</span><span>.</span><span>list</span><span>()</span><span>import</span> <span>os</span> <span>import</span> <span>openai</span> <span>openai</span><span>.</span><span>organization</span> <span>=</span> <span>"YOUR_ORG_ID"</span> <span>openai</span><span>.</span><span>api_key</span> <span>=</span> <span>os</span><span>.</span><span>getenv</span><span>(</span><span>"OPENAI_API_KEY"</span><span>)</span> <span>openai</span><span>.</span><span>Model</span><span>.</span><span>list</span><span>()</span>import os import openai openai.organization = "YOUR_ORG_ID" openai.api_key = os.getenv("OPENAI_API_KEY") openai.Model.list()
Enter fullscreen mode Exit fullscreen mode
Making requests
To make your first API request, simply copy and paste the command below into your terminal. Just be sure to replace “$OPENAI_API_KEY” with your own secret API key.
Tracardi utilizes asynchronous API calls using asyncio, so it doesn’t use the openai library. Therefore, I will adopt the same method and use raw REST API calls instead of the library. This approach will make the code more efficient and flexible.
To make an API call, you can use any existing library that you are familiar with. For simplicity, I will use the requests library.
We will be using the “https://api.openai.com/v1/completions” POST endpoint.
The plugin sends the following payload to that API, where prompt is the actual prompt:
<span>prompt_length</span> <span>=</span> <span>len</span><span>(</span><span>prompt</span><span>.</span><span>split</span><span>())</span><span>max_tokens</span> <span>=</span> <span>1024</span> <span>-</span> <span>prompt_length</span><span>payload</span> <span>=</span> <span>{</span><span>"model"</span><span>:</span> <span>"text-davinci-003"</span><span>,</span><span>"prompt"</span><span>:</span> <span>prompt</span><span>,</span><span>"max_tokens"</span><span>:</span> <span>max_tokens</span><span>,</span><span>"temperature"</span><span>:</span> <span>0.5</span><span>,</span><span>"top_p"</span><span>:</span> <span>1</span><span>,</span><span>"n"</span><span>:</span> <span>1</span><span>}</span><span>prompt_length</span> <span>=</span> <span>len</span><span>(</span><span>prompt</span><span>.</span><span>split</span><span>())</span> <span>max_tokens</span> <span>=</span> <span>1024</span> <span>-</span> <span>prompt_length</span> <span>payload</span> <span>=</span> <span>{</span> <span>"model"</span><span>:</span> <span>"text-davinci-003"</span><span>,</span> <span>"prompt"</span><span>:</span> <span>prompt</span><span>,</span> <span>"max_tokens"</span><span>:</span> <span>max_tokens</span><span>,</span> <span>"temperature"</span><span>:</span> <span>0.5</span><span>,</span> <span>"top_p"</span><span>:</span> <span>1</span><span>,</span> <span>"n"</span><span>:</span> <span>1</span> <span>}</span>prompt_length = len(prompt.split()) max_tokens = 1024 - prompt_length payload = { "model": "text-davinci-003", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.5, "top_p": 1, "n": 1 }
Enter fullscreen mode Exit fullscreen mode
Remember to set the headers:
<span>headers</span> <span>=</span> <span>{</span><span>"Authorization"</span><span>:</span> <span>f</span><span>"Bearer </span><span>{</span><span>OPENAI_API_KEY</span><span>}</span><span>"</span><span>,</span><span>"Content-Type"</span><span>:</span> <span>"application/json"</span><span>}</span><span>headers</span> <span>=</span> <span>{</span> <span>"Authorization"</span><span>:</span> <span>f</span><span>"Bearer </span><span>{</span><span>OPENAI_API_KEY</span><span>}</span><span>"</span><span>,</span> <span>"Content-Type"</span><span>:</span> <span>"application/json"</span> <span>}</span>headers = { "Authorization": f"Bearer {OPENAI_API_KEY}", "Content-Type": "application/json" }
Enter fullscreen mode Exit fullscreen mode
Putting it all together, here’s the actual request in Python using the requests library:
<span>import</span> <span>requests</span><span># set the OpenAI API endpoint </span><span>url</span> <span>=</span> <span>"https://api.openai.com/v1/completions"</span><span># set the prompt and other parameters for the request </span><span>prompt</span> <span>=</span> <span>"Hello, how are you?"</span><span>prompt_length</span> <span>=</span> <span>len</span><span>(</span><span>prompt</span><span>.</span><span>split</span><span>())</span><span>max_tokens</span> <span>=</span> <span>1024</span> <span>-</span> <span>prompt_length</span><span>payload</span> <span>=</span> <span>{</span><span>"model"</span><span>:</span> <span>"text-davinci-003"</span><span>,</span><span>"prompt"</span><span>:</span> <span>prompt</span><span>,</span><span>"max_tokens"</span><span>:</span> <span>max_tokens</span><span>,</span><span>"temperature"</span><span>:</span> <span>0.5</span><span>,</span><span>"top_p"</span><span>:</span> <span>1</span><span>,</span><span>"n"</span><span>:</span> <span>1</span><span>}</span><span>headers</span> <span>=</span> <span>{</span><span>"Authorization"</span><span>:</span> <span>"Bearer YOUR_API_KEY"</span><span>,</span><span>"Content-Type"</span><span>:</span> <span>"application/json"</span><span>}</span><span># send the request to the OpenAI API endpoinsk-Nnndgp2NfhIVwXNcPC6kT3BlbkFJUJmZOlWuYImxSGaGdB4Gt </span><span>response</span> <span>=</span> <span>requests</span><span>.</span><span>post</span><span>(</span><span>url</span><span>,</span> <span>headers</span><span>=</span><span>headers</span><span>,</span> <span>json</span><span>=</span><span>payload</span><span>)</span><span># print the response content </span><span>print</span><span>(</span><span>response</span><span>.</span><span>json</span><span>())</span><span>import</span> <span>requests</span> <span># set the OpenAI API endpoint </span><span>url</span> <span>=</span> <span>"https://api.openai.com/v1/completions"</span> <span># set the prompt and other parameters for the request </span><span>prompt</span> <span>=</span> <span>"Hello, how are you?"</span> <span>prompt_length</span> <span>=</span> <span>len</span><span>(</span><span>prompt</span><span>.</span><span>split</span><span>())</span> <span>max_tokens</span> <span>=</span> <span>1024</span> <span>-</span> <span>prompt_length</span> <span>payload</span> <span>=</span> <span>{</span> <span>"model"</span><span>:</span> <span>"text-davinci-003"</span><span>,</span> <span>"prompt"</span><span>:</span> <span>prompt</span><span>,</span> <span>"max_tokens"</span><span>:</span> <span>max_tokens</span><span>,</span> <span>"temperature"</span><span>:</span> <span>0.5</span><span>,</span> <span>"top_p"</span><span>:</span> <span>1</span><span>,</span> <span>"n"</span><span>:</span> <span>1</span> <span>}</span> <span>headers</span> <span>=</span> <span>{</span> <span>"Authorization"</span><span>:</span> <span>"Bearer YOUR_API_KEY"</span><span>,</span> <span>"Content-Type"</span><span>:</span> <span>"application/json"</span> <span>}</span> <span># send the request to the OpenAI API endpoinsk-Nnndgp2NfhIVwXNcPC6kT3BlbkFJUJmZOlWuYImxSGaGdB4Gt </span><span>response</span> <span>=</span> <span>requests</span><span>.</span><span>post</span><span>(</span><span>url</span><span>,</span> <span>headers</span><span>=</span><span>headers</span><span>,</span> <span>json</span><span>=</span><span>payload</span><span>)</span> <span># print the response content </span><span>print</span><span>(</span><span>response</span><span>.</span><span>json</span><span>())</span>import requests # set the OpenAI API endpoint url = "https://api.openai.com/v1/completions" # set the prompt and other parameters for the request prompt = "Hello, how are you?" prompt_length = len(prompt.split()) max_tokens = 1024 - prompt_length payload = { "model": "text-davinci-003", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.5, "top_p": 1, "n": 1 } headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } # send the request to the OpenAI API endpoinsk-Nnndgp2NfhIVwXNcPC6kT3BlbkFJUJmZOlWuYImxSGaGdB4Gt response = requests.post(url, headers=headers, json=payload) # print the response content print(response.json())
Enter fullscreen mode Exit fullscreen mode
Integrating ChatGPT response with your code
Tracardi has implemented a clever trick to integrate ChatGPT response with their code. They ask the chat to respond in JSON format, which is then parsed into a dictionary that can be used in the code.
To generate the desired response from ChatGPT, you need to provide the right prompt. Tracardi uses the following prompt for their use case:
Customer bought HERE_LIST_OF_PRODUCTS. What other products would you suggest to this customer? Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects.Customer bought HERE_LIST_OF_PRODUCTS. What other products would you suggest to this customer? Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects.Customer bought HERE_LIST_OF_PRODUCTS. What other products would you suggest to this customer? Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects.
Enter fullscreen mode Exit fullscreen mode
Make sure to replace HERE_LIST_OF_PRODUCTS with the actual list of products that the customer bought.
So our code could look like this:
<span>import</span> <span>requests</span><span># set the OpenAI API endpoint </span><span>url</span> <span>=</span> <span>"https://api.openai.com/v1/completions"</span><span># Add your api key </span><span>YOUR_API_KEY</span> <span>=</span> <span>""</span><span>list_of_products</span> <span>=</span> <span>[</span><span>"Adidas sneakers"</span><span>,</span> <span>"t-shirt"</span><span>]</span><span>list_of_products</span> <span>=</span> <span>","</span><span>.</span><span>join</span><span>(</span><span>list_of_products</span><span>)</span><span># set the prompt and other parameters for the request </span><span>prompt</span> <span>=</span> <span>f</span><span>"Customer bought </span><span>{</span><span>list_of_products</span><span>}</span><span>. What other products would you suggest to this customer? Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects. "</span><span>prompt_length</span> <span>=</span> <span>len</span><span>(</span><span>prompt</span><span>.</span><span>split</span><span>())</span><span>max_tokens</span> <span>=</span> <span>1024</span> <span>-</span> <span>prompt_length</span><span>payload</span> <span>=</span> <span>{</span><span>"model"</span><span>:</span> <span>"text-davinci-003"</span><span>,</span><span>"prompt"</span><span>:</span> <span>prompt</span><span>,</span><span>"max_tokens"</span><span>:</span> <span>max_tokens</span><span>,</span><span>"temperature"</span><span>:</span> <span>0.5</span><span>,</span><span>"top_p"</span><span>:</span> <span>1</span><span>,</span><span>"n"</span><span>:</span> <span>1</span><span>}</span><span>headers</span> <span>=</span> <span>{</span><span>"Authorization"</span><span>:</span> <span>f</span><span>"Bearer </span><span>{</span><span>YOUR_API_KEY</span><span>}</span><span>"</span><span>,</span><span>"Content-Type"</span><span>:</span> <span>"application/json"</span><span>}</span><span># send the request to the OpenAI API endpoint </span><span>response</span> <span>=</span> <span>requests</span><span>.</span><span>post</span><span>(</span><span>url</span><span>,</span> <span>headers</span><span>=</span><span>headers</span><span>,</span> <span>json</span><span>=</span><span>payload</span><span>)</span><span># print the response content </span><span>print</span><span>(</span><span>response</span><span>.</span><span>json</span><span>())</span><span>import</span> <span>requests</span> <span># set the OpenAI API endpoint </span><span>url</span> <span>=</span> <span>"https://api.openai.com/v1/completions"</span> <span># Add your api key </span><span>YOUR_API_KEY</span> <span>=</span> <span>""</span> <span>list_of_products</span> <span>=</span> <span>[</span><span>"Adidas sneakers"</span><span>,</span> <span>"t-shirt"</span><span>]</span> <span>list_of_products</span> <span>=</span> <span>","</span><span>.</span><span>join</span><span>(</span><span>list_of_products</span><span>)</span> <span># set the prompt and other parameters for the request </span><span>prompt</span> <span>=</span> <span>f</span><span>"Customer bought </span><span>{</span><span>list_of_products</span><span>}</span><span>. What other products would you suggest to this customer? Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects. "</span> <span>prompt_length</span> <span>=</span> <span>len</span><span>(</span><span>prompt</span><span>.</span><span>split</span><span>())</span> <span>max_tokens</span> <span>=</span> <span>1024</span> <span>-</span> <span>prompt_length</span> <span>payload</span> <span>=</span> <span>{</span> <span>"model"</span><span>:</span> <span>"text-davinci-003"</span><span>,</span> <span>"prompt"</span><span>:</span> <span>prompt</span><span>,</span> <span>"max_tokens"</span><span>:</span> <span>max_tokens</span><span>,</span> <span>"temperature"</span><span>:</span> <span>0.5</span><span>,</span> <span>"top_p"</span><span>:</span> <span>1</span><span>,</span> <span>"n"</span><span>:</span> <span>1</span> <span>}</span> <span>headers</span> <span>=</span> <span>{</span> <span>"Authorization"</span><span>:</span> <span>f</span><span>"Bearer </span><span>{</span><span>YOUR_API_KEY</span><span>}</span><span>"</span><span>,</span> <span>"Content-Type"</span><span>:</span> <span>"application/json"</span> <span>}</span> <span># send the request to the OpenAI API endpoint </span><span>response</span> <span>=</span> <span>requests</span><span>.</span><span>post</span><span>(</span><span>url</span><span>,</span> <span>headers</span><span>=</span><span>headers</span><span>,</span> <span>json</span><span>=</span><span>payload</span><span>)</span> <span># print the response content </span><span>print</span><span>(</span><span>response</span><span>.</span><span>json</span><span>())</span>import requests # set the OpenAI API endpoint url = "https://api.openai.com/v1/completions" # Add your api key YOUR_API_KEY = "" list_of_products = ["Adidas sneakers", "t-shirt"] list_of_products = ",".join(list_of_products) # set the prompt and other parameters for the request prompt = f"Customer bought {list_of_products}. What other products would you suggest to this customer? Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects. " prompt_length = len(prompt.split()) max_tokens = 1024 - prompt_length payload = { "model": "text-davinci-003", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.5, "top_p": 1, "n": 1 } headers = { "Authorization": f"Bearer {YOUR_API_KEY}", "Content-Type": "application/json" } # send the request to the OpenAI API endpoint response = requests.post(url, headers=headers, json=payload) # print the response content print(response.json())
Enter fullscreen mode Exit fullscreen mode
When I ran this code I got this response:
<span>{</span><span> </span><span>"id"</span><span>:</span><span> </span><span>"cmpl-7d9JftFrUQy30f0amNadsryzd6V"</span><span>,</span><span> </span><span>"object"</span><span>:</span><span> </span><span>"text_completion"</span><span>,</span><span> </span><span>"created"</span><span>:</span><span> </span><span>1682415119</span><span>,</span><span> </span><span>"model"</span><span>:</span><span> </span><span>"text-davinci-003"</span><span>,</span><span> </span><span>"choices"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span>"text"</span><span>:</span><span> </span><span>"</span><span>\n\n</span><span>[</span><span>\n</span><span> {</span><span>\n</span><span> "</span><span>Product</span><span> </span><span>Name</span><span>": "</span><span>Adidas</span><span> </span><span>Track</span><span> </span><span>Pants</span><span>",</span><span>\n</span><span> "</span><span>Category</span><span>": "</span><span>Clothing</span><span>"</span><span>\n</span><span> },</span><span>\n</span><span> {</span><span>\n</span><span> "</span><span>Product</span><span> </span><span>Name</span><span>": "</span><span>Adidas</span><span> </span><span>Backpack</span><span>",</span><span>\n</span><span> "</span><span>Category</span><span>": "</span><span>Bags</span><span>"</span><span>\n</span><span> },</span><span>\n</span><span> {</span><span>\n</span><span> "</span><span>Product</span><span> </span><span>Name</span><span>": "</span><span>Adidas</span><span> </span><span>Sunglasses</span><span>",</span><span>\n</span><span> "</span><span>Category</span><span>": "</span><span>Accessories</span><span>"</span><span>\n</span><span> }</span><span>\n</span><span>]"</span><span>,</span><span> </span><span>"index"</span><span>:</span><span> </span><span>0</span><span>,</span><span> </span><span>"logprobs"</span><span>:</span><span> </span><span>None</span><span>,</span><span> </span><span>"finish_reason"</span><span>:</span><span> </span><span>"stop"</span><span>}</span><span> </span><span>],</span><span> </span><span>"usage"</span><span>:</span><span> </span><span>{</span><span> </span><span>"prompt_tokens"</span><span>:</span><span> </span><span>43</span><span>,</span><span> </span><span>"completion_tokens"</span><span>:</span><span> </span><span>86</span><span>,</span><span> </span><span>"total_tokens"</span><span>:</span><span> </span><span>129</span><span> </span><span>}</span><span> </span><span>}</span><span> </span><span>{</span><span> </span><span>"id"</span><span>:</span><span> </span><span>"cmpl-7d9JftFrUQy30f0amNadsryzd6V"</span><span>,</span><span> </span><span>"object"</span><span>:</span><span> </span><span>"text_completion"</span><span>,</span><span> </span><span>"created"</span><span>:</span><span> </span><span>1682415119</span><span>,</span><span> </span><span>"model"</span><span>:</span><span> </span><span>"text-davinci-003"</span><span>,</span><span> </span><span>"choices"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span>"text"</span><span>:</span><span> </span><span>"</span><span>\n\n</span><span>[</span><span>\n</span><span> {</span><span>\n</span><span> "</span><span>Product</span><span> </span><span>Name</span><span>": "</span><span>Adidas</span><span> </span><span>Track</span><span> </span><span>Pants</span><span>",</span><span>\n</span><span> "</span><span>Category</span><span>": "</span><span>Clothing</span><span>"</span><span>\n</span><span> },</span><span>\n</span><span> {</span><span>\n</span><span> "</span><span>Product</span><span> </span><span>Name</span><span>": "</span><span>Adidas</span><span> </span><span>Backpack</span><span>",</span><span>\n</span><span> "</span><span>Category</span><span>": "</span><span>Bags</span><span>"</span><span>\n</span><span> },</span><span>\n</span><span> {</span><span>\n</span><span> "</span><span>Product</span><span> </span><span>Name</span><span>": "</span><span>Adidas</span><span> </span><span>Sunglasses</span><span>",</span><span>\n</span><span> "</span><span>Category</span><span>": "</span><span>Accessories</span><span>"</span><span>\n</span><span> }</span><span>\n</span><span>]"</span><span>,</span><span> </span><span>"index"</span><span>:</span><span> </span><span>0</span><span>,</span><span> </span><span>"logprobs"</span><span>:</span><span> </span><span>None</span><span>,</span><span> </span><span>"finish_reason"</span><span>:</span><span> </span><span>"stop"</span><span>}</span><span> </span><span>],</span><span> </span><span>"usage"</span><span>:</span><span> </span><span>{</span><span> </span><span>"prompt_tokens"</span><span>:</span><span> </span><span>43</span><span>,</span><span> </span><span>"completion_tokens"</span><span>:</span><span> </span><span>86</span><span>,</span><span> </span><span>"total_tokens"</span><span>:</span><span> </span><span>129</span><span> </span><span>}</span><span> </span><span>}</span><span> </span>{ "id": "cmpl-7d9JftFrUQy30f0amNadsryzd6V", "object": "text_completion", "created": 1682415119, "model": "text-davinci-003", "choices": [ {"text": "\n\n[\n {\n "Product Name": "Adidas Track Pants",\n "Category": "Clothing"\n },\n {\n "Product Name": "Adidas Backpack",\n "Category": "Bags"\n },\n {\n "Product Name": "Adidas Sunglasses",\n "Category": "Accessories"\n }\n]", "index": 0, "logprobs": None, "finish_reason": "stop"} ], "usage": { "prompt_tokens": 43, "completion_tokens": 86, "total_tokens": 129 } }
Enter fullscreen mode Exit fullscreen mode
We need to parse “choices” into dict and we can use the response in python code.
Here is the code to do that:
<span>result</span> <span>=</span> <span>response</span><span>.</span><span>json</span><span>()</span><span>choices</span> <span>=</span> <span>json</span><span>.</span><span>loads</span><span>(</span><span>result</span><span>[</span><span>"choices"</span><span>][</span><span>0</span><span>][</span><span>"text"</span><span>])</span><span>print</span><span>(</span><span>choices</span><span>)</span><span>result</span> <span>=</span> <span>response</span><span>.</span><span>json</span><span>()</span> <span>choices</span> <span>=</span> <span>json</span><span>.</span><span>loads</span><span>(</span><span>result</span><span>[</span><span>"choices"</span><span>][</span><span>0</span><span>][</span><span>"text"</span><span>])</span> <span>print</span><span>(</span><span>choices</span><span>)</span>result = response.json() choices = json.loads(result["choices"][0]["text"]) print(choices)
Enter fullscreen mode Exit fullscreen mode
We can certainly improve the accuracy of the prompt by including more specific information about our products. For example:
Customer bought {list_of_products}. What other products would you suggest to this customer, knowing that we sell {list_of_our_product_categories}. Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects in "choices" key.Customer bought {list_of_products}. What other products would you suggest to this customer, knowing that we sell {list_of_our_product_categories}. Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects in "choices" key.Customer bought {list_of_products}. What other products would you suggest to this customer, knowing that we sell {list_of_our_product_categories}. Please provide at least 3 suggestions as a pair of product name and category. Respond with a JSON list of objects in "choices" key.
Enter fullscreen mode Exit fullscreen mode
With the fixed prompt I got the following result:
<span>{</span><span> </span><span>"choices"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span>"product"</span><span>:</span><span> </span><span>"Energy Drinks"</span><span>,</span><span> </span><span>"category"</span><span>:</span><span> </span><span>"Beverages"</span><span>},</span><span> </span><span>{</span><span>"product"</span><span>:</span><span> </span><span>"Gym Bag"</span><span>,</span><span> </span><span>"category"</span><span>:</span><span> </span><span>"Training Equipment"</span><span>},</span><span> </span><span>{</span><span>"product"</span><span>:</span><span> </span><span>"Running Shorts"</span><span>,</span><span> </span><span>"category"</span><span>:</span><span> </span><span>"Sport Apparel"</span><span>}</span><span> </span><span>]</span><span> </span><span>}</span><span> </span><span>{</span><span> </span><span>"choices"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span>"product"</span><span>:</span><span> </span><span>"Energy Drinks"</span><span>,</span><span> </span><span>"category"</span><span>:</span><span> </span><span>"Beverages"</span><span>},</span><span> </span><span>{</span><span>"product"</span><span>:</span><span> </span><span>"Gym Bag"</span><span>,</span><span> </span><span>"category"</span><span>:</span><span> </span><span>"Training Equipment"</span><span>},</span><span> </span><span>{</span><span>"product"</span><span>:</span><span> </span><span>"Running Shorts"</span><span>,</span><span> </span><span>"category"</span><span>:</span><span> </span><span>"Sport Apparel"</span><span>}</span><span> </span><span>]</span><span> </span><span>}</span><span> </span>{ "choices": [ {"product": "Energy Drinks", "category": "Beverages"}, {"product": "Gym Bag", "category": "Training Equipment"}, {"product": "Running Shorts", "category": "Sport Apparel"} ] }
Enter fullscreen mode Exit fullscreen mode
Copy past code
import jsonimport requests# set the OpenAI API endpointurl = "https://api.openai.com/v1/completions"# Add your api keyYOUR_API_KEY = ""list_of_products = ["Adidas sneakers", "t-shirt"]list_of_products = ",".join(list_of_products)list_of_our_product_categories = "Sport apparel, energy drinks, training equipment, etc."# set the prompt and other parameters for the requestprompt = f"Customer bought {list_of_products}. What other products would you suggest to this customer, " \f"knowing that we sell {list_of_our_product_categories}. Please provide at least 3 suggestions as " \f"a pair of product name and category. Respond with a JSON list of objects in \"choices\" key. "prompt_length = len(prompt.split())max_tokens = 1024 - prompt_lengthpayload = {"model": "text-davinci-003","prompt": prompt,"max_tokens": max_tokens,"temperature": 0.5,"top_p": 1,"n": 1}headers = {"Authorization": f"Bearer {YOUR_API_KEY}","Content-Type": "application/json"}# send the request to the OpenAI API endpointresponse = requests.post(url, headers=headers, json=payload)# print the response contentresult = response.json()choices = json.loads(result["choices"][0]["text"])print(choices)import json import requests # set the OpenAI API endpoint url = "https://api.openai.com/v1/completions" # Add your api key YOUR_API_KEY = "" list_of_products = ["Adidas sneakers", "t-shirt"] list_of_products = ",".join(list_of_products) list_of_our_product_categories = "Sport apparel, energy drinks, training equipment, etc." # set the prompt and other parameters for the request prompt = f"Customer bought {list_of_products}. What other products would you suggest to this customer, " \ f"knowing that we sell {list_of_our_product_categories}. Please provide at least 3 suggestions as " \ f"a pair of product name and category. Respond with a JSON list of objects in \"choices\" key. " prompt_length = len(prompt.split()) max_tokens = 1024 - prompt_length payload = { "model": "text-davinci-003", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.5, "top_p": 1, "n": 1 } headers = { "Authorization": f"Bearer {YOUR_API_KEY}", "Content-Type": "application/json" } # send the request to the OpenAI API endpoint response = requests.post(url, headers=headers, json=payload) # print the response content result = response.json() choices = json.loads(result["choices"][0]["text"]) print(choices)import json import requests # set the OpenAI API endpoint url = "https://api.openai.com/v1/completions" # Add your api key YOUR_API_KEY = "" list_of_products = ["Adidas sneakers", "t-shirt"] list_of_products = ",".join(list_of_products) list_of_our_product_categories = "Sport apparel, energy drinks, training equipment, etc." # set the prompt and other parameters for the request prompt = f"Customer bought {list_of_products}. What other products would you suggest to this customer, " \ f"knowing that we sell {list_of_our_product_categories}. Please provide at least 3 suggestions as " \ f"a pair of product name and category. Respond with a JSON list of objects in \"choices\" key. " prompt_length = len(prompt.split()) max_tokens = 1024 - prompt_length payload = { "model": "text-davinci-003", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.5, "top_p": 1, "n": 1 } headers = { "Authorization": f"Bearer {YOUR_API_KEY}", "Content-Type": "application/json" } # send the request to the OpenAI API endpoint response = requests.post(url, headers=headers, json=payload) # print the response content result = response.json() choices = json.loads(result["choices"][0]["text"]) print(choices)
Enter fullscreen mode Exit fullscreen mode
This simple trick can make you integration with chatGPT very easy. If you would like to use this approach within a customer journey – you can always install Tracardi and add your custom python plugins to it.
原文链接:How to code a product recommendation engine in PYTHON using ChatGPT?
暂无评论内容