Watson Developer Cloud Swift SDK
概览
Watson Developer Cloud Swift SDK 可以帮助移动开发者轻松构建 Watson 驱动的应用程序。通过 Swift SDK,您可以利用 Watson 高级人工智能、机器学习和深度学习技术来理解和处理非结构化数据,并以新的方式与移动用户进行互动。
有很多资源可以帮助您使用 Swift SDK 构建您的第一个认知应用程序
内容
通用
服务
This SDK提供用于访问以下Watson服务的类和方法。
开始前
- 您需要一个IBM Cloud账户。
需求
- Xcode 9.3+
- Swift 4.1+
- iOS 10.0+
安装
可以使用Cocoapods、Carthage或Swift Package Manager安装IBM Watson Swift SDK。
Cocoapods
你可以用RubyGems安装Cocoapods。
$ sudo gem install cocoapods
如果你的项目还没有Podfile,请在项目根目录中使用pod init
命令。要使用Cocoapods安装Swift SDK,请将你将使用的服务添加到Podfile中,如下所示(用你的应用名称替换MyApp
)。下面的例子显示了目前所有可用的服务;你的Podfile应该只包含你的应用需要使用的服务。
use_frameworks!
target 'MyApp' do
pod 'IBMWatsonAssistantV1', '~> 0.38.1'
pod 'IBMWatsonAssistantV2', '~> 0.38.1'
pod 'IBMWatsonConversationV1', '~> 0.38.1'
pod 'IBMWatsonDiscoveryV1', '~> 0.38.1'
pod 'IBMWatsonLanguageTranslatorV3', '~> 0.38.1'
pod 'IBMWatsonNaturalLanguageClassifierV1', '~> 0.38.1'
pod 'IBMWatsonNaturalLanguageUnderstandingV1', '~> 0.38.1'
pod 'IBMWatsonPersonalityInsightsV3', '~> 0.38.1'
pod 'IBMWatsonSpeechToTextV1', '~> 0.38.1'
pod 'IBMWatsonTextToSpeechV1', '~> 0.38.1'
pod 'IBMWatsonToneAnalyzerV3', '~> 0.38.1'
pod 'IBMWatsonVisualRecognitionV3', '~> 0.38.1'
end
运行pod install
命令,打开生成的.xcworkspace
文件。要更新到新版本,使用pod update
。
在源文件中导入框架时,排除IBMWatson
前缀和版本后缀。例如,安装IBMWatsonAssistantV1
后,在源文件中导入它为import Assistant
。
有关使用Cocoapods的更多信息,请参阅Cocoapods指南。
Carthage
您可以使用Homebrew来安装Carthage。
$ brew update
$ brew install carthage
如果您的项目还没有Cartfile,在项目的根目录中使用touch Cartfile
命令。要使用Carthage安装IBM Watson Swift SDK,将以下内容添加到您的Cartfile中。
github "watson-developer-cloud/swift-sdk" ~> 0.38.1
然后运行以下命令以构建依赖项和框架
$ carthage update --platform iOS
按照以下Carthage安装说明在此处进行。注意,上述命令将下载并构建IBM Watson Swift SDK中所有的服务。确保将构建的框架(只针对您应用所需的服务)拖放到您的Xcode项目中,并将它们导入需要这些框架的源文件中。以下框架需要添加到您的应用中
RestKit.framework
- 您的应用将要使用的服务(
AssistantV1.framework
、DiscoveryV1.framework
等) - (仅限
Speech to Text
)Starscream.framework
Swift Package Manager
将以下内容添加到您的Package.swift
文件中,以将IBM Watson Swift SDK标识为依赖项。当您使用swift build
构建项目时,包管理器将克隆Swift SDK。
dependencies: [
.package(url: "https://github.com/watson-developer-cloud/swift-sdk", from: "0.38.1")
]
身份验证
Watson服务正在迁移到基于令牌的标识和访问管理(IAM)身份验证。
- 对于某些服务实例,您通过使用IAM来对API进行身份验证。
- 在其他实例中,您通过提供服务实例的用户名和密码来进行身份验证。
- 视觉识别仅使用API密钥对5月23日之前创建的实例进行身份验证。视觉识别的新实例使用IAM。
获取凭证
要确定使用哪种身份验证方法,请查看服务凭证。对于所有沃森服务,您以完全相同的方式查找服务凭证。
IAM
一些服务使用基于令牌的标识和访问管理(IAM)身份验证。IAM身份验证使用服务API密钥获取一个访问令牌,并将其与调用一起传递。访问令牌大约有效期为一个小时,必须重新生成。
您提供IAM服务的
- 使用API密钥以让SDK管理访问令牌的生命周期。SDK请求访问令牌,确保访问令牌有效,并在必要时刷新它。
- 如果您想自行管理生命周期,请使用访问令牌。有关详细信息,请参阅使用IAM令牌进行身份验证。如果您想切换到API密钥,请用IAM API密钥替代您存储的IAM凭证。
提供IAM API密钥
let discovery = Discovery(version: "your-version-here", apiKey: "your-apikey-here")
如果您要为IBM Cloud Private (ICP)提供API密钥,请使用基本身份验证,将
"apikey"
username
icp-
password
提供accessToken
let discovery = Discovery(version: "your-version-here", accessToken: "your-accessToken-here")
更新accessToken
discovery.accessToken("new-accessToken-here")
用户名和密码
let discovery = Discovery(username: "your-username-here", password: "your-password-here", version: "your-version-here")
API密钥
注意:此类型身份验证仅适用于视觉识别,并且用于在2018年5月23日之前创建的实例。较新的视觉识别实例使用IAM。
let visualRecognition = VisualRecognition(apiKey: "your-apiKey-here", version: "your-version-here")
自定义服务URL
您可以通过修改serviceURL
属性来设置一个自定义服务URL。在特定区域运行实例或通过代理连接时可能需要自定义服务URL。
例如,以下是如何连接到在德国托管的Tone Analyzer实例的方法
let toneAnalyzer = ToneAnalyzer(
username: "your-username-here",
password: "your-password-here",
version: "yyyy-mm-dd"
)
toneAnalyzer.serviceURL = "https://gateway-fra.watsonplatform.net/tone-analyzer/api"
自定义头部
可以向Watson服务发送不同的头部。例如,Watson服务记录请求及其结果以改进服务,但您可以包含X-Watson-Learning-Opt-Out
头部进行退出。
我们为每个类公开了defaultHeaders
公共属性,以便用户可以轻松自定义头部。
let naturalLanguageClassifier = NaturalLanguageClassifier(username: username, password: password)
naturalLanguageClassifier.defaultHeaders = ["X-Watson-Learning-Opt-Out": "true"]
每个服务方法还接受一个可选的headers
参数,它是一个包含请求头部的字典,这些头部将随请求一起发送。
示例应用
同步执行
默认情况下,SDK执行所有网络操作都是异步的。如果您的应用程序需要同步执行,可以使用DispatchGroup
。例如:
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
assistant.message(workspaceID: workspaceID) { response in
print(response.output.text)
dispatchGroup.leave()
}
dispatchGroup.wait(timeout: .distantFuture)
Objective-C 兼容性
有关在 Objective-C 应用程序中使用 Watson 开发者云 Swift SDK 的更多信息,请参阅本教程。
Linux 兼容性
要在 Linux 项目中使用 Watson SDK,请遵循Swift 包管理器说明。请注意,由于语音到文本和文本到语音功能依赖于 Linux 上不可用的框架,因此不支持这些功能。
贡献
我们非常欢迎任何形式的帮助!如果您想做出贡献,请阅读我们的贡献指南,了解如何开始。
许可协议
本库遵循 Apache 2.0 许可协议。完整许可文本可在 LICENSE 中找到。
此 SDK 旨在与 Apple iOS 产品一起使用,并建议与官方许可的 Apple 开发工具一起使用。