Используйте AirOps API в своем клиентском приложении с помощью нашего JavaScript SDK.
npm i @airops/airops-js
или используйте CDN:
< script src = “https://cdn.jsdelivr.net/npm/@airops/airops-js/dist/index.umd.min.js” > </ script >
Для аутентификации с помощью нашего API с помощью SDK вам потребуются три части информации: идентификатор вашей рабочей области, ключ API и идентификатор пользователя (идентификатор пользователя в вашем приложении). Сначала используйте ключ API для хэширования вашего идентификатора пользователя на внутреннем сервере. В результате будет получен хешированный идентификатор пользователя, уникальный для вашей комбинации ключа API и идентификатора пользователя. Идентификатор рабочей области и ключ API можно найти в настройках вашей рабочей области.
const crypto = require ( 'crypto' ) ;
const userIdHash = ( ) => {
const apiKey = 'YOUR_API_KEY' ;
const userId = 'YOUR_USER_ID' ;
// Convert your api key to a buffer
const key = Buffer . from ( apiKey , 'utf-8' ) ;
// Hash the message using HMAC-SHA256 and the key
const hash = crypto . createHmac ( 'sha256' , key ) . update ( userId ) . digest ( 'hex' ) ;
return hash ;
} ;
const airopsInstance = AirOps . identify ( {
userId : 'YOUR_USER_ID' ,
workspaceId : 'YOUR_WORKSPACE_ID' ,
hashedUserId : 'YOUR_USER_ID_HASH' ,
} ) ;
Обратите внимание, что для запуска общедоступных приложений авторизация не требуется. Если вы работаете с публичной инициализацией без аргументов:
const airopsInstance = new AirOps ( ) ;
После успешной инициализации SDK вы можете начать использовать доступные методы для взаимодействия с нашим API. Обратите внимание, что методы возвращают обещания.
SDK предоставляет метод для выполнения приложения. Для потоковой передачи результатов приложения вам необходимо включить поток и передать функцию обратного вызова методу выполнения. При желании вы можете передать дополнительную функцию обратного вызова, чтобы получить уведомление о завершении работы приложения.
// Execute an app
const response = await airopsInstance . apps . execute ( {
appId : 1 ,
version : 1 ,
payload : {
inputs : {
name : 'XXXXYYYYZZZZ' ,
} ,
} ,
stream : true , // Optional - Default false
streamCallback : ( data : { content : string } ) => {
// Do something with the data
} , // Optional, required if stream is true
streamCompletedCallback : ( data : { content : string } ) => {
// Do something with the data
} , // Optional
} ) ;
// Wait for result
const result = await response . result ( ) ;
// Do something with result.output
// Cancel execution
await response . cancel ( ) ;
Ответ
Ответ метода выполнения будет содержать идентификатор выполнения, который можно будет использовать для получения результатов позже, а также два метода для ожидания результатов или отмены выполнения:
interface ExecuteResponse {
executionId : number ;
result : ( ) => Promise < AppExecution > ;
cancel : ( ) => Promise < void > ;
}
interface AppExecution {
airops_app_id : number ;
id : number ;
status : string ;
output : string ;
stream_channel_id : string ;
}
Метод result реализует логику получения результатов с тайм-аутом 10 минут . Если вы хотите реализовать свою собственную логику извлечения, вы можете использовать метод getResults, описанный ниже.
Вы можете реализовать свою собственную логику извлечения, используя метод getResults.
const result = await airopsInstance . apps . getResults ( {
executionId : response . executionId ,
} ) ;
Для приложений чата вы можете использовать метод chatStream
, который позволяет отправлять сообщения в приложение чата.
const response = await airopsInstance . apps . chatStream ( {
appId : 2 ,
message ,
inputs : {
name : 'XXXXYYYYZZZZ' ,
} ,
streamCallback : ( { action : ChatAction , ... data ) => {
// ChatAction can either be 'agent-response', 'agent-action' or 'agent-action-error'
// data will have different values depending on the action:
// - agent-response: { token: string, stream_finished: boolean, result :string }
// - agent-action: { tool: string, tool_input: Record<string, string> }
// - agent-action-error: { tool: string, tool_error: string }
} ,
streamCompletedCallback : ( data : { result : string } ) => {
// do something with data.result
} ,
... ( sessionId && { sessionId } ) , // optionally pass sessionId to continue chat.
} ) ;
// Wait for result
const result = await response . result ( ) ;
// Do something with result.result
// Cancel execution
await response . cancel ( ) ;
// Use session id to continue chat
response . sessionId ;
Ответ
Ответ метода ChatStream будет содержать идентификатор сеанса и метод результата для ожидания ответа. Чтобы продолжить чат, передайте sessionId вместе с сообщением.
export interface ChatStreamResponse {
sessionId : string ;
result : Promise < { result : string } > ; // result is a promise that resolves when the execution is completed.
}
try {
await airopsInstance . apps . execute ( {
appId : 1 ,
version : 4 ,
payload : {
inputs : { name : 'XXXXYYYYZZZZ' } ,
} ,
} ) ;
} catch ( e ) {
// Do something with error.message
}
Присоединяйтесь к нашему Slack-сообществу разработчиков AirOps.