在 Bluemix 中,我在哪里指定 AlchemyAPI 密钥



我已经将 AlchemyAPI 服务添加到我在 Bluemix 上的 Python 应用程序中。我可以在AlchemyAPI服务的服务凭据中看到API密钥。在应用代码或文件中的哪个位置,我应该指定此密钥,以便我可以调用服务?代码运行良好,除了我调用 AlchemyAPI 的部分之外,可以执行所有操作。

我在这里遵循了入门教程,但它只是以"获取密钥"停止,并没有告诉我如何处理它。

我尝试过但不起作用的一些事情:

  • manifest.yml文件中添加了一个条目,如下所示。没用。
服务业:- the_alchemy-service_name应用:-路径:。  环境:     ALCHEMY_KEY: the_actual_key
  • 应用代码中,在调用 AlchemyAPI 之前调用密钥。没用。
VCAP_SERVICES = os.getenv('VCAP_SERVICES')key = (VCAP_SERVICES['alchemy_api'][0]['credentials']['apikey'])从炼金术进口炼金术API   炼金术 = 炼金术API()

您使用的Python API需要将AlchemyAPI密钥作为参数传递给脚本或存储在文件中。您可以在代码中看到这一点 https://github.com/AlchemyAPI/alchemyapi_python/blob/master/alchemyapi.py

如果你想在 https://github.com/AlchemyAPI/alchemyapi_python 坚持使用AlchemyAPI SDK,它希望API密钥存储在当前工作目录中名为"api_key.txt"的文件中。如果要在 Bluemix 中使用此 SDK,并假设您从环境中检索 API 密钥的值(如德语所示),则应在代码中创建"api_key.txt"文件:

# write the key to the file
f = open('api_key.txt', 'w')
f.write(alchemy_key)
f.close()

https://github.com/watson-developer-cloud/python-sdk 有一个更新和最新的Python SDK,我强烈建议使用此SDK。它支持AlchemyAPI的更多功能。

基于您要使用的AlchemyAPI,您可以查看各种示例。这是一个使用炼金术语言: https://github.com/watson-developer-cloud/python-sdk/blob/master/examples/alchemy_language_v1.py

如果您将 AlchemyAPI 服务绑定到您的应用程序,此 SDK 将自动从VCAP_SERVICES中查找 AlchemyAPI 密钥。

只要

您不将代码推送到其他人可以看到您的密钥的公共存储库,您就可以使用该manifest.yml。否则,我建议您使用 Bluemix UI 来编辑环境变量。

manifest.yml

- applications:
  path: .
  env:
     ALCHEMY_KEY: the_actual_key

节点:

var alchemyKey = process.env.ALCHEMY_KEY || '<default-key>';

蟒:

alchemy_key = os.getenv('ALCHEMY_KEY', '<default-key>')

爪哇岛:

String alchemyKey = System.getenv("VCAP_SERVICES");
alchemyKey = alchemyKey != null ? alchemyKey || "<default-key>"

您还可以将 Alchemy 服务绑定到 Bluemix 应用程序,并获取环境中的密钥以及其他环境变量。在这种情况下,键将是VCAP_SERVICES对象的一部分。

"alchemy_api": [{
  "name": "alchemy_api_free_docs",
  "label": "alchemy_api",
  "plan": "free",
  "credentials": {
    "url": "https://gateway-a.watsonplatform.net/calls",
    "apikey": "THE-API-KEY"
  }
}]

在这种情况下,代码将是类似的,但是如果您使用像Lavigne在他的答案中提到的@Frederic SDK之一,则会自动提取密钥。

感谢@Frederic和@German共享的资源,我能够通过更多的研究找到答案。我没有按原样使用建议的 SDK,因为 SDK 包含所有内容,并且我正在尝试创建一个简单的演示应用程序。

简答题

不要调用 AlchemyAPI 模块。请改为调用 Watson Developer Cloud 模块。

长答案

对于 Bluemix 上的 Python 应用程序,依赖项必须列在 requirements.txt 文件中。Bluemix 将自动 pip 安装这些模块,而无需您执行任何操作。

因为我使用的是AlchemyAPI

服务(并按照他们的入门指南),所以我在requirements.txt中将AlchemyAPI列为依赖项。我以为 Bluemix 会安装它。在我的 Python 代码中,我通过 from alchemyapi import AlchemyAPI 调用了该模块。

错误的假设。 alchemyapi不能通过 Bluemix 进行 pip 安装。要调用的模块是 watson-developer-cloud

调用后,您可以指定 api 密钥,以便:

从watson_developer_cloud导入炼金语言V1alchemy_language = AlchemyLanguageV1(api_key='THE_API_KEY')

所以,这里是问题的答案:你使用 api_key 变量来保存键的值,你调用watson-developer-cloud模块,而不是alchemyapi模块。将 Alchemy 服务绑定到应用程序时,可以通过编程方式从服务凭据中提取 API 密钥。

相关内容

  • 没有找到相关文章

最新更新