在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):watson-developer-cloud/python-sdk开源软件地址(OpenSource Url):https://github.com/watson-developer-cloud/python-sdk开源编程语言(OpenSource Language):Python 99.5%开源软件介绍(OpenSource Introduction):Watson Developer Cloud Python SDKDeprecated buildsPython client library to quickly get started with the various Watson APIs services. AnnouncementsTone Analyzer DeprecationAs of this major release, 6.0.0, the Tone Analyzer api has been removed in preparation for deprecation. If you wish to continue using this sdk to make calls to Tone Analyzer until its final deprecation, you will have to use a previous version. On 24 February 2022, IBM announced the deprecation of the Tone Analyzer service. The service will no longer be available as of 24 February 2023. As of 24 February 2022, you will not be able to create new instances. Existing instances will be supported until 24 February 2023. As an alternative, we encourage you to consider migrating to the Natural Language Understanding service on IBM Cloud. With Natural Language Understanding, tone analysis is done by using a pre-built classifications model, which provides an easy way to detect language tones in written text. For more information, see Migrating from Watson Tone Analyzer Customer Engagement endpoint to Natural Language Understanding. Natural Language Classifier DeprecationAs of this major release, 6.0.0, the NLC api has been removed in preparation for deprecation. If you wish to continue using this sdk to make calls to NLC until its final deprecation, you will have to use a previous version. On 9 August 2021, IBM announced the deprecation of the Natural Language Classifier service. The service will no longer be available from 8 August 2022. As of 9 September 2021, you will not be able to create new instances. Existing instances will be supported until 8 August 2022. Any instance that still exists on that date will be deleted. As an alternative, we encourage you to consider migrating to the Natural Language Understanding service on IBM Cloud that uses deep learning to extract data and insights from text such as keywords, categories, sentiment, emotion, and syntax, along with advanced multi-label text classification capabilities, to provide even richer insights for your business or industry. For more information, see Migrating to Natural Language Understanding. Before you begin
InstallationTo install, use pip install --upgrade ibm-watson or easy_install --upgrade ibm-watson Note the following: a) Versions prior to 3.0.0 can be installed using: pip install --upgrade watson-developer-cloud b) If you run into permission issues try: sudo -H pip install --ignore-installed six ibm-watson For more details see #225 c) In case you run into problems installing the SDK in DSX, try
Restarting the kernel For more details see #405 ExamplesThe examples folder has basic and advanced examples. The examples within each service assume that you already have service credentials. Running in IBM CloudIf you run your app in IBM Cloud, the SDK gets credentials from the AuthenticationWatson services are migrating to token-based Identity and Access Management (IAM) authentication.
Getting credentialsTo find out which authentication to use, view the service credentials. You find the service credentials for authentication the same way for all Watson services:
On this page, you should be able to see your credentials for accessing your service instance. Supplying credentialsThere are three ways to supply the credentials you found above to the SDK for authentication. Credential fileWith a credential file, you just need to put the file in the right place and the SDK will do the work of parsing and authenticating. You can get this file by clicking the Download button for the credentials in the Manage tab of your service instance. The file downloaded will be called
As long as you set that up correctly, you don't have to worry about setting any authentication options in your code. So, for example, if you created and downloaded the credential file for your Discovery instance, you just need to do the following: discovery = DiscoveryV1(version='2019-04-30') And that's it! If you're using more than one service at a time in your code and get two different If you would like to configure the location/name of your credential file, you can set an environment variable called export IBM_CREDENTIALS_FILE="<path>" where Environment VariablesSimply set the environment variables using _ syntax. For example, using your favourite terminal, you can set environment variables for Assistant service instance: export ASSISTANT_APIKEY="<your apikey>"
export ASSISTANT_AUTH_TYPE="iam" The credentials will be loaded from the environment automatically assistant = AssistantV1(version='2018-08-01') ManuallyIf you'd prefer to set authentication values manually in your code, the SDK supports that as well. The way you'll do this depends on what type of credentials your service instance gives you. IAMIBM Cloud has migrated to token-based Identity and Access Management (IAM) authentication. IAM authentication uses a service API key to get an access token that is passed with the call. Access tokens are valid for approximately one hour and must be regenerated. You supply either an IAM service API key or a bearer token:
Supplying the API keyfrom ibm_watson import DiscoveryV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
# In the constructor, letting the SDK manage the token
authenticator = IAMAuthenticator('apikey',
url='<iam_url>') # optional - the default value is https://iam.cloud.ibm.com/identity/token
discovery = DiscoveryV1(version='2019-04-30',
authenticator=authenticator)
discovery.set_service_url('<url_as_per_region>') Generating bearer tokens using API keyfrom ibm_watson import IAMTokenManager
# In your API endpoint use this to generate new bearer tokens
iam_token_manager = IAMTokenManager(apikey='<apikey>')
token = iam_token_manager.get_token() Supplying the bearer tokenfrom ibm_watson import DiscoveryV1
from ibm_cloud_sdk_core.authenticators import BearerTokenAuthenticator
# in the constructor, assuming control of managing the token
authenticator = BearerTokenAuthenticator('your bearer token')
discovery = DiscoveryV1(version='2019-04-30',
authenticator=authenticator)
discovery.set_service_url('<url_as_per_region>') Username and passwordfrom ibm_watson import DiscoveryV1
from ibm_cloud_sdk_core.authenticators import BasicAuthenticator
authenticator = BasicAuthenticator('username', 'password')
discovery = DiscoveryV1(version='2019-04-30', authenticator=authenticator)
discovery.set_service_url('<url_as_per_region>') No Authenticationfrom ibm_watson import DiscoveryV1
from ibm_cloud_sdk_core.authenticators import NoAuthAuthenticator
authenticator = NoAuthAuthenticator()
discovery = DiscoveryV1(version='2019-04-30', authenticator=authenticator)
discovery.set_service_url('<url_as_per_region>') Python versionTested on Python 3.5, 3.6, and 3.7. QuestionsIf you have issues with the APIs or have a question about the Watson services, see Stack Overflow. Changes for v1.0Version 1.0 focuses on the move to programmatically-generated code for many of the services. See the changelog for the details. Changes for v2.0
from ibm_watson import AssistantV1
assistant = AssistantV1(
username='xxx',
password='yyy',
url='<url_as_per_region>',
version='2018-07-10')
response = assistant.list_workspaces(headers={'Custom-Header': 'custom_value'})
print(response.get_result())
print(response.get_headers())
print(response.get_status_code()) See the changelog for the details. Changes for v3.0The SDK is generated using OpenAPI Specification(OAS3). Changes are basic reordering of parameters in function calls. The package is renamed to ibm_watson. See the changelog for the details. Changes for v4.0Authenticator variable indicates the type of authentication to be used. from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('your apikey')
assistant = AssistantV1(
version='2018-07-10',
authenticator=authenticator)
assistant.set_service_url('<url as per region>') For more information, follow the MIGRATION-V4 MigrationTo move from v3.x to v4.0, refer to the MIGRATION-V4. Configuring the http client (Supported from v1.1.0)To set client configs like timeout use the from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('your apikey')
assistant = AssistantV1(
version='2021-11-27',
authenticator=authenticator)
assistant.set_service_url('https://api.us-south.assistant.watson.cloud.ibm.com')
assistant.set_http_config({'timeout': 100})
response = assistant.message(workspace_id=workspace_id, input={
'text': 'What\'s the weather like?'}).get_result()
print(json.dumps(response, indent=2)) Use behind a corporate proxyTo use the SDK with any proxies you may have they can be set as shown below. For documentation on proxies see here See this example configuration: from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('your apikey')
assistant = AssistantV1(
version='2021-11-27',
authenticator=authenticator)
assistant.set_service_url('https://api.us-south.assistant.watson.cloud.ibm.com')
assistant.set_http_config({'proxies': {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}}) Sending custom certificatesTo send custom certificates as a security measure in your request, use the cert property of the HTTPS Agent. from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('your apikey')
assistant = AssistantV1(
version='2021-11-27',
authenticator=authenticator)
assistant.set_service_url('https://api.us-south.assistant.watson.cloud.ibm.com')
assistant.set_http_config({'cert': ('path_to_cert_file','path_to_key_file')}) Disable SSL certificate verificationFor ICP(IBM Cloud Private), you can disable the SSL certificate verification by: service.set_disable_ssl_verification(True) Or can set it from extrernal sources. For example set in the environment variable.
Setting the service urlTo set the base service to be used when contacting the service service.set_service_url('my_new_service_url') Or can set it from extrernal sources. For example set in the environment variable.
Sending request headersCustom headers can be passed in any request in the form of a headers = {
'Custom-Header': 'custom_value'
} For example, to send a header called from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('your apikey')
assistant = AssistantV1(
version='2018-07-10',
authenticator=authenticator)
assistant.set_service_url('https://gateway.watsonplatform.net/assistant/api')
response = assistant.list_workspaces(headers={'Custom-Header': 'custom_value'}).get_result() Parsing HTTP response informationIf you would like access to some HTTP response information along with the response model, you can set the from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('your apikey')
assistant = AssistantV1(
version='2018-07-10',
authenticator=authenticator)
assistant.set_service_url('https://gateway.watsonplatform.net/assistant/api')
assistant.set_detailed_response(True)
response = assistant.list_workspaces(headers={'Custom-Header': 'custom_value'}).get_result()
print(response) This would give an output of {
'result': <response returned by service>,
'headers': { <http response headers> },
'status_code': <http status code>
} You can use the Getting the transaction IDEvery SDK call returns a response with a transaction ID in the |