Python API

OpenAI

class RPA.OpenAI.OpenAI

Library to support OpenAI and Azure OpenAI services.

Library is not included in the rpaframework package, so in order to use it you have to add rpaframework-openai with the desired version in your conda.yaml file.

Robot Framework example usage

*** Settings ***
Library    RPA.Robocorp.Vault
Library    RPA.OpenAI

*** Tasks ***
Create a text completion
    ${secrets}   Get Secret   secret_name=OpenAI
    Authorize To OpenAI   api_key=${secrets}[key]
    ${completion}    Completion Create
    ...     Write a tagline for an ice cream shop
    ...     temperature=0.6
    Log   ${completion}

Python example usage

from RPA.Robocorp.Vault import Vault
from RPA.OpenAI import OpenAI

secrets = Vault().get_secret("OpenAI")
baselib = OpenAI()
baselib.authorize_to_openai(secrets["key"])

result = baselib.completion_create(
    Create a tagline for icecream shop',
    temperature=0.6,
)
print(result)
ROBOT_LIBRARY_DOC_FORMAT = 'REST'
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
authorize_to_azure_openai(api_key: str, api_base: str, api_type: Optional[str] = 'azure', api_version: Optional[str] = '2023-05-15') None

Keyword for authorize to Azure OpenAI.

Parameters

Robot Framework example:

${secrets}   Get Secret   secret_name=AzureOpenAI
Authorize To Azure Openai
...    api_key=${secrets}[api_key]
...    api_base=${secrets}[api_base]
...    api_type=azure
...    api_version=2023-05-15

Python example:

secrets = Vault().get_secret("AzureOpenAI")
baselib = OpenAI()
baselib.authorize_to_azure_openai(
    secrets["api_key"],
    secrets["api_base"],
    "azure",
    "2023-05-15"
)
authorize_to_openai(api_key: str) None

Keyword for authorize to OpenAI with your API key obtained from your account.

Parameters

api_key – Your OpenAI API key

Robot Framework example:

${secrets}   Get Secret   secret_name=OpenAI
Authorize To OpenAI   api_key=${secrets}[key]

Python example:

secrets = Vault().get_secret("OpenAI")
baselib = OpenAI()
baselib.authorize_to_openai(secrets["key"])
chat_completion_create(user_content: Optional[str] = None, conversation: Optional[List] = None, model: Optional[str] = 'gpt-3.5-turbo', system_content: Optional[str] = None, temperature: Optional[int] = 1, top_probability: Optional[int] = 1, frequency_penalty: Optional[int] = 0, presence_penalty: Optional[int] = 0) None

Keyword for creating ChatGPT text completions using OpenAI or Azure OpenAI. Keyword returns the response as a string and the message history as a list.

Note. When using Azure OpenAI you must provide the deployment_name as the model parameter instead of the model ID used with OpenAI.

Parameters
  • user_content – Text submitted to ChatGPT to generate completions.

  • conversation – List containing the conversation to be continued. Leave empty for a new conversation.

  • model – For OpenAI the ID of the model to use, e.g. gpt-4 or gpt-3.5-turbo. For Azure OpenAI the Deployment name, e.g. myGPT4deployment.

  • system_content – The system message helps set the behavior of the assistant.

  • temperature – What sampling temperature to use between 0 to 2. Higher values means the model will take more risks.

  • top_probability – An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass.

  • frequency_penalty – Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far.

  • presence_penalty – Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far.

Robot Framework example:

# Get response without conversation history.
${response}   @{chatgpt_conversation}=     Chat Completion Create
...    user_content=What is the biggest mammal?
Log    ${response}

# Continue the conversation by using the "conversation" argument.
${response}   @{chatgpt_conversation}=     Chat Completion Create
...    conversation=${chatgpt_conversation}
...    user_content=How old can it live?
Log    ${response}
completion_create(prompt: str, model: Optional[str] = 'text-davinci-003', temperature: Optional[int] = 0.7, max_tokens: Optional[int] = 256, top_probability: Optional[int] = 1, frequency_penalty: Optional[int] = 0, presence_penalty: Optional[int] = 0, result_format: Optional[str] = 'string') None

Keyword for creating text completions in OpenAI and Azure OpenAI. Keyword returns a text string.

Note. When using Azure OpenAI you must provide the deployment_name as the model parameter instead of the model ID used with OpenAI.

Parameters
  • prompt – Text submitted to OpenAI for creating natural language.

  • model – For OpenAI the ID of the model to use, e.g. text-davinci-003. For Azure OpenAI the Deployment name, e.g. myDavinci3deployment.

  • temperature – What sampling temperature to use. Higher values means the model will take more risks..

  • max_tokens – The maximum number of tokens to generate in the completion..

  • top_probability – Controls diversity via nucleus sampling. 0.5 means half of all likelihood-weighted options are considered.

  • frequency_penalty – Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far.

  • presence_penalty – Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far.

  • result_format – Result format (string / json). Return just a string or the default JSON response.

Robot Framework example:

${response}  Completion Create
...     Write a tagline for an icecream shop.
...     temperature=0.6
Log     ${response}

Python example:

result = baselib.completion_create(
    'Create a tagline for icecream shop',
    temperature=0.6,
)
print(result)
image_create(prompt: str, size: Optional[str] = '512x512', num_images: Optional[int] = 1, result_format: Optional[str] = 'list') None

Keyword for creating one or more images using OpenAI. Keyword returns a list of urls for the images created.

Note. Keyword not supported in the Azure OpenAI service.

Parameters
  • prompt – A text description of the desired image(s). The maximum length is 1000 characters.

  • size – Size of the files to be created. 256x256, 512x512, 1024x1024

  • num_images – The number of images to generate. Must be between 1 and 10.

  • result_format – Result format (list / json).

Robot Framework example:

${images}    Image Create
...   Cartoon style picture of a cute monkey skateboarding.
...   size=256x256
...   num_images=2
FOR    ${url}    IN    @{images}
    Log    ${url}
END

Python example:

images = baselib.image_create(
    'Cartoon style picture of a cute monkey skateboarding',
    size='256x256',
    num_images=2,
)
for url in images:
    print(url)
image_create_variation(src_image: str, size: Optional[str] = '512x512', num_images: Optional[int] = 1, result_format: Optional[str] = 'list') None

Keyword for creating one or more variations of a image. Keyword returns a list of urls for the images created. Source file must be a valid PNG file, less than 4MB, and square.

Note. Keyword not supported in the Azure OpenAI service.

Parameters
  • src_image – The image to use as the basis for the variation(s). Must be a valid PNG file, less than 4MB, and square.

  • size – The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024.

  • num_images – The number of images to generate. Must be between 1 and 10

  • result_format – Result format (list / json).

Robot Framework example:

${variations}   Image Create Variation
...     source_image.png
...     size=256x256
...     num_images=2
FOR    ${url}    IN    @{variations}
    Log    ${url}
END

Python example:

variations = baselib.image_create_variation(
    'source_image.png',
    size='256x256',
    num_images=2,
)
for url in variations:
    print(url)