Skip to main content

Jina AI Python SDK

Project description

JinaAI Python SDK

The JinaAI Python SDK is an efficient instrument that smoothly brings the power of JinaAI's products — SceneXplain, PromptPerfect, Rationale, BestBanner, and JinaChat — into Python applications. Acting as a sturdy interface for JinaAI's APIs, this SDK lets you effortlessly formulate and fine-tune prompts, thus streamlining application development.

Installing

Package manager

Using pip:

$ pip install jinaai

API secrets

To generate an API secret, you need to authenticate on each respective platform's API tab:

Note: Each secret is product-specific and cannot be interchanged. If you're planning to use multiple products, you'll need to generate a separate secret for each.

Example usage

Import the SDK and instantiate a new client with your authentication secrets:

from jinaai import JinaAI

jinaai = JinaAI(
    secrets = {
        'promptperfect-secret': 'XXXXXX',
        'scenex-secret': 'XXXXXX',
        'rationale-secret': 'XXXXXX',
        'jinachat-secret': 'XXXXXX',
        'bestbanner-secret': 'XXXXXX',
    }
)

Describe images:

descriptions = jinaai.describe(
    'https://picsum.photos/200'
)

Evaluate situations:

decisions = jinaai.decide(
    'Going to Paris this summer', 
    { 'analysis': 'proscons' }
)

Optimize prompts:

prompts = jinaai.optimize(
    'Write an Hello World function in Python'
)

Generate complex answers:

output = jinaai.generate(
    'Give me a recipe for a pizza with pineapple'
)

Create images from text:

output = jinaai.imagine(
    'A controversial fusion of sweet pineapple and savory pizza.'
)

Use APIs together:

situations = [toBase64(img) for img in [
    'factory-1.png',
    'factory-2.png',
    'factory-3.png',
    'factory-4.png',
]]

descriptions = jinaai.describe(situations)

prompt1 = [
    'Do any of those situations present a danger?',
    'Reply with [YES] or [NO] and explain why',
    *['SITUATION:\n' + desc['output'] for i, desc in enumerate(descriptions['results'])]
]

analysis = jinaai.generate('\n'.join(prompt1))

prompt2 = [
    'What should be done first to make those situations safer?',
    'I only want the most urgent situation',
    *['SITUATION:\n' + desc['output'] for i, desc in enumerate(descriptions['results'])]
]

recommendation = jinaai.generate('\n'.join(propmt2))

swot = jinaai.decide(
    recommendation['output'],
    { 'analysis': 'swot' }
)

banners = jinaai.imagine(
    *[desc['output'] for i, desc in enumerate(descriptions['results'])]
)

Raw Output

You can retrieve the raw output of each APIs by passing raw: True in the options:

descriptions = jinaai.describe(
    'https://picsum.photos/200',
    { 'raw': True }
)

print(descriptions['raw'])

API Documentation

JinaAi.describe

output = JinaAI.describe(input, options)
  • Input
VARIABLE TYPE VALUE
input str / str array Image URL or Base64
  • Options
VARIABLE TYPE VALUE
options dict
options['algorithm'] None / str Aqua / Bolt / Comet / Dune / Ember / Flash
options['features'] None / str array high_quality, question_answer, tts, opt-out
options['languages'] None / str array en, cn, de, fr, it...
options['question'] None / str Question related to the picture(s)
options['style'] None / str default / concise / prompt
  • Output
VARIABLE TYPE VALUE
output dict
output['results'] dict array
results[0]['output'] str The picture description
results[0]['i18n'] dict Contains one key for each item in languages
...i18n['cn'] str The translated picture description

JinaAi.optimize

output = JinaAI.optimize(input, options)
  • Input
VARIABLE TYPE VALUE
input str / str array Image URL or Base64 / prompt to optimize
  • Options
VARIABLE TYPE VALUE
options dict
options['targetModel'] None / str chatgpt / gpt-4 / stablelm-tuned-alpha-7b / claude / cogenerate / text-davinci-003 / dalle / sd / midjourney / kandinsky / lexica
options['features'] None / str array preview, no_spam, shorten, bypass_ethics, same_language, always_en, high_quality, redo_original_image, variable_subs, template_run
options['iterations'] None / number Default: 1
options['previewSettings'] None / dict Contains the settings for the preview
...previewSettings['temperature'] number Example: 0.9
...previewSettings['topP'] number Example: 0.9
...previewSettings['topK'] number Example: 0
...previewSettings['frequencyPenalty'] number Example: 0
...previewSettings['presencePenalty'] number Example: 0
options['previewVariables'] None / dict Contains one key for each variables in the prompt
...previewVariables['var1'] str The value of the variable
options['timeout'] Number Default: 20000
options['target_language'] None / str en / cn / de / fr / it...
  • Output
VARIABLE TYPE VALUE
output dict
output['results'] dict array
results[0]['output'] str The optimized prompt

JinaAi.decide

output = JinaAI.decide(input, options)
  • Input
VARIABLE TYPE VALUE
input str / str array Decision to evaluate
  • Options
VARIABLE TYPE VALUE
options dict
options['analysis'] None / str proscons / swot / multichoice / outcomes
options['style'] None / str concise / professional / humor / sarcastic / childish / genZ
options['profileId'] None / str The id of the Personas you want to use
  • Output
VARIABLE TYPE VALUE
output dict
output['results'] dict array
results[0]['proscons'] None / dict
...proscons['pros'] dict Contains one key for each pros
...proscons['pros']['pros1'] str The explanation of the pros
...proscons['cons'] dict Contains one key for each cons
...proscons['cons']['cons1'] str The explanation of the cons
...proscons['bestChoice'] str
...proscons['conclusion'] str
...proscons['confidenceScore'] number
results[0]['swot'] None / dict
...swot['strengths'] dict Contains one key for each strength
...swot['strengths']['str1'] str The explanation of the strength
...swot['weaknesses'] dict Contains one key for each weakness
...swot['weaknesses']['weak1'] str The explanation of the weakness
...swot['opportunities'] dict Contains one key for each opportunity
...swot['opportunities']['opp1'] str The explanation of the opportunity
...swot['threats'] dict Contains one key for each threat
...swot['threats']['thre1'] str The explanation of the threat
...swot['bestChoice'] str
...swot['conclusion'] str
...swot['confidenceScore'] number
results[0]['multichoice'] None / dict Contains one key for each choice
...multichoice['choice1'] str The value of the choice
results[0]['outcomes'] None / dict array
...outcomes[0]['children'] None / dict array a recursive array of results['outcomes']
...outcomes[0]['label'] str
...outcomes[0]['sentiment'] str

JinaAi.generate

output = JinaAI.generate(input, options)
  • Input
VARIABLE TYPE VALUE
input str / str array Image URL or Base64 / prompt
  • Options
VARIABLE TYPE VALUE
options dict
options['role'] None / str user / assistant
options['name'] None / str The name of the author of this message
options['chatId'] None / str The id of the conversation to continue
options['stream'] None / boolean Whether to stream back partial progress, Default: false
options['temperature'] None / number Default: 1
options['top_p'] None / str Default: 1
options['stop'] None / str / str array Up to 4 sequences where the API will stop generating further tokens
options['max_tokens'] None / number Default: infinite
options['presence_penalty'] None / number Number between -2.0 and 2.0, Default: 0
options['frequency_penalty'] None / number Number between -2.0 and 2.0, Default: 0
options['logit_bias'] None / dict The likelihood for a token to appear in the completion
...logit_bias['tokenId'] number Bias value from -100 to 100
  • Output
VARIABLE TYPE VALUE
output dict
output['output'] str The generated answer
output['chatId'] str The chatId to continue the conversation

JinaAi.imagine

output = JinaAI.imagine(input, options)
  • Input
VARIABLE TYPE VALUE
input str / str array Prompt
  • Options

No options available

  • Output
VARIABLE TYPE VALUE
output dict
output['results'] dict array
results[0]['output'] array array of 4 image urls

JinaAi.utils

outout = JinaAI.utils.image_to_base64(input)
VARIABLE TYPE VALUE
input str Image path on disk
output str Base64 image
outout = JinaAI.utils.is_url(input)
VARIABLE TYPE VALUE
input str
output boolean
outout = JinaAI.utils.is_base64(input)
VARIABLE TYPE VALUE
input str
output boolean

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jinaai-0.2.3.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

jinaai-0.2.3-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file jinaai-0.2.3.tar.gz.

File metadata

  • Download URL: jinaai-0.2.3.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for jinaai-0.2.3.tar.gz
Algorithm Hash digest
SHA256 ec2d22194297459a917dfe4f3e6358721267740774e2dde66a55ed26e650853e
MD5 64c85866d1e8d8b618873605bac71ba3
BLAKE2b-256 dbd0ec3958249a141e824151e5a9484bc450fb2286e8ab8f23939f48e0bd37bb

See more details on using hashes here.

File details

Details for the file jinaai-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: jinaai-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for jinaai-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 01a827ea1bdca5c5eea083caa858357cc333b2443caca71ba0bcc47be941885b
MD5 5c8cc6e929b40fcd5b82ff709f5e9c72
BLAKE2b-256 1d19d271a778d03eb5992a98f96662e9d184997c73eeb1d3a956e0fe71e217a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page