DEV Community

Fabian Anguiano
Fabian Anguiano

Posted on

Automating Product Descriptions in Odoo with OpenAI's GPT-3 and Python

Introduction

If you're managing an online store or any business that requires a catalog of products, you know how time-consuming it can be to write unique and engaging product descriptions. What if there was a way to automate this process?

In this tutorial, we'll walk you through how to automatically generate product descriptions in Odoo using OpenAI's GPT-3. We'll use Python to bridge the gap between Odoo and OpenAI's API. Don't worry if you're not a coding expert; we'll guide you through each step, including an explanation of the code.

Prerequisites

  1. Odoo Account: You should have an Odoo instance where you can add or update products.
  2. OpenAI API Key: Get an API key from OpenAI by signing up at their Developer Dashboard.
  3. Python 3.x: Make sure Python is installed on your machine. You can download it from here.

For more Python and Odoo scripts, you can check out this GitHub repository: Odoo Unable to Unreserve Fix Script.

Step-by-Step Guide

Step 1: Install Required Python Packages

First, you need to install some Python packages that our script will use. Open your terminal and run:

\bash
pip install xmlrpc.client openai configparser
\
\

Step 2: Create a Configuration File

Create a new text file named config.ini\ in your working directory and paste the following:

\`ini
[OpenAI]
api_key=YOUR_OPENAI_API_KEY

[Odoo]
url=YOUR_ODOO_URL
db=YOUR_ODOO_DB_NAME
username=YOUR_ODOO_USERNAME
password=YOUR_ODOO_PASSWORD
`\

Replace the placeholders with your actual OpenAI API key and Odoo credentials.

Step 3: Write the Python Script

Create a new Python file (main.py\) and paste the script shared at the beginning of this article. Save the file.

Step 4: Understanding the Code

The script is divided into several key parts:

  1. SSL Configuration: This part of the code sets up a secure connection for the script. This is especially important if you're working in an environment that requires secure HTTPS connections but doesn't support HTTPS verification.

    \python
    try:
    _create_unverified_https_context = ssl._create_unverified_context
    except AttributeError:
    pass
    else:
    ssl._create_default_https_context = _create_unverified_https_context
    \
    \

  2. Loading Configurations: Here, we read the OpenAI and Odoo details from the config.ini\ file you created earlier.

    \python
    config = configparser.ConfigParser()
    config.read('config.ini')
    \
    \

  3. Odoo Login: This part logs you into your Odoo account and sets up the XML-RPC clients needed to interact with Odoo's API.

    \python
    common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
    uid = common.authenticate(db, username, password, {})
    models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
    \
    \

  4. Fetching Products: This part fetches the first 100 products from your Odoo database.

    \python
    product_ids = models.execute_kw(db, uid, password,
    'product.template', 'search',
    [[]],
    {'limit': 100})
    \
    \

  5. Updating Descriptions: Here, for each product, we call the OpenAI API to generate a product description and then update the product in Odoo.

    \python
    for product in products:
    response = openai.Completion.create(
    engine="text-davinci-003",
    prompt=f"Describe the product: {product['name']}",
    temperature=0.5,
    max_tokens=100
    )
    description = response.choices[0].text.strip()
    \
    \

Step 5: Run the Script

Open your terminal, navigate to the folder where main.py\ is saved, and run:

\bash
python main.py
\
\

Step 6: Verify the Changes

Log in to your Odoo account and navigate to the products. You should see that the product descriptions have been updated.

Conclusion

Automating product descriptions can save you a lot of time and effort. With just a few lines of Python code, we've created a powerful tool that uses OpenAI's GPT-3 to generate product descriptions and updates them in Odoo. This tutorial not only guides you through how to set up and use the script but also provides an in-depth explanation of how the code works. Happy automating!

Top comments (0)