Merge pull request #1671 from automatisch/helix-integration
feat: Use new API endpoint from Helix
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
import FormData from 'form-data';
|
|
||||||
import defineAction from '../../../../helpers/define-action.js';
|
import defineAction from '../../../../helpers/define-action.js';
|
||||||
|
|
||||||
export default defineAction({
|
export default defineAction({
|
||||||
@@ -6,50 +5,51 @@ export default defineAction({
|
|||||||
key: 'newChat',
|
key: 'newChat',
|
||||||
description: 'Create a new chat session for Helix AI.',
|
description: 'Create a new chat session for Helix AI.',
|
||||||
arguments: [
|
arguments: [
|
||||||
|
{
|
||||||
|
label: 'Session ID',
|
||||||
|
key: 'sessionId',
|
||||||
|
type: 'string',
|
||||||
|
required: false,
|
||||||
|
description:
|
||||||
|
'ID of the chat session to continue. Leave empty to start a new chat.',
|
||||||
|
variables: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'System Prompt',
|
||||||
|
key: 'systemPrompt',
|
||||||
|
type: 'string',
|
||||||
|
required: false,
|
||||||
|
description:
|
||||||
|
'Optional system prompt to start the chat with. It will be used only for new chat sessions.',
|
||||||
|
variables: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Input',
|
label: 'Input',
|
||||||
key: 'input',
|
key: 'input',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
required: true,
|
required: true,
|
||||||
description: 'Prompt to start the chat with.',
|
description: 'User input to start the chat with.',
|
||||||
variables: true,
|
variables: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
async run($) {
|
async run($) {
|
||||||
const formData = new FormData();
|
const response = await $.http.post('/api/v1/sessions/chat', {
|
||||||
formData.append('input', $.step.parameters.input);
|
session_id: $.step.parameters.sessionId,
|
||||||
formData.append('mode', 'inference');
|
system: $.step.parameters.systemPrompt,
|
||||||
formData.append('type', 'text');
|
messages: [
|
||||||
|
{
|
||||||
const sessionResponse = await $.http.post('/api/v1/sessions', formData, {
|
role: 'user',
|
||||||
headers: {
|
content: {
|
||||||
...formData.getHeaders(),
|
content_type: 'text',
|
||||||
},
|
parts: [$.step.parameters.input],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const sessionId = sessionResponse.data.id;
|
$.setActionItem({
|
||||||
|
raw: response.data,
|
||||||
let attempts = 0;
|
});
|
||||||
|
|
||||||
while (attempts < 10) {
|
|
||||||
const response = await $.http.get(`/api/v1/sessions/${sessionId}`);
|
|
||||||
|
|
||||||
const message =
|
|
||||||
response.data.interactions[response.data.interactions.length - 1];
|
|
||||||
|
|
||||||
if (message.creator === 'system' && message.state === 'complete') {
|
|
||||||
$.setActionItem({
|
|
||||||
raw: message,
|
|
||||||
});
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
||||||
attempts++;
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new Error('Failed to start a new chat session for Helix API!');
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user