-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(TaskProcessing): More task types
Signed-off-by: Marcel Klehr <[email protected]>
- Loading branch information
1 parent
6f3ee6b
commit 5cbcd12
Showing
6 changed files
with
285 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
95 changes: 95 additions & 0 deletions
95
lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/** | ||
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors | ||
* SPDX-License-Identifier: AGPL-3.0-or-later | ||
*/ | ||
|
||
namespace OCP\TaskProcessing\TaskTypes; | ||
|
||
use OCP\IL10N; | ||
use OCP\TaskProcessing\EShapeType; | ||
use OCP\TaskProcessing\ITaskType; | ||
use OCP\TaskProcessing\ShapeDescriptor; | ||
|
||
/** | ||
* This is the task processing task type for text reformulation | ||
* @since 31.0.0 | ||
*/ | ||
class ContextAgentInteraction implements ITaskType { | ||
public const ID = 'core:contextagent:interaction'; | ||
|
||
public function __construct( | ||
private IL10N $l, | ||
) { | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
public function getName(): string { | ||
return $this->l->t('ContextAgent'); | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
public function getDescription(): string { | ||
return $this->l->t('Chat with an agent'); | ||
} | ||
|
||
/** | ||
* @return string | ||
*/ | ||
public function getId(): string { | ||
return self::ID; | ||
} | ||
|
||
/** | ||
* @return ShapeDescriptor[] | ||
*/ | ||
public function getInputShape(): array { | ||
return [ | ||
'input' => new ShapeDescriptor( | ||
$this->l->t('Chat message'), | ||
$this->l->t('A chat message to send to the agent.'), | ||
EShapeType::Text | ||
), | ||
'confirmation' => new ShapeDescriptor( | ||
$this->l->t('Confirmation'), | ||
$this->l->t('Whether to confirm previously requested actions: 0 for denial and 1 for confirmation.'), | ||
EShapeType::Number | ||
), | ||
'conversation_token' => new ShapeDescriptor( | ||
$this->l->t('Conversation token'), | ||
$this->l->t('A token representing the conversation.'), | ||
EShapeType::Text | ||
), | ||
]; | ||
} | ||
|
||
/** | ||
* @return ShapeDescriptor[] | ||
*/ | ||
public function getOutputShape(): array { | ||
return [ | ||
'output' => new ShapeDescriptor( | ||
$this->l->t('Generated response'), | ||
$this->l->t('The response from the chat model.'), | ||
EShapeType::Text | ||
), | ||
'conversation_token' => new ShapeDescriptor( | ||
$this->l->t('The new conversation token'), | ||
$this->l->t('Send this along with the next interaction.'), | ||
EShapeType::Text | ||
), | ||
'actions' => new ShapeDescriptor( | ||
$this->l->t('Requested actions by the agent'), | ||
$this->l->t('Actions that the agent would like to carry out in JSON format.'), | ||
EShapeType::Text | ||
), | ||
]; | ||
} | ||
} |
80 changes: 80 additions & 0 deletions
80
lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/** | ||
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors | ||
* SPDX-License-Identifier: AGPL-3.0-or-later | ||
*/ | ||
|
||
namespace OCP\TaskProcessing\TaskTypes; | ||
|
||
use OCP\IL10N; | ||
use OCP\TaskProcessing\EShapeType; | ||
use OCP\TaskProcessing\ITaskType; | ||
use OCP\TaskProcessing\ShapeDescriptor; | ||
|
||
/** | ||
* This is the task processing task type for text reformulation | ||
* @since 31.0.0 | ||
*/ | ||
class TextToTextChangeTone implements ITaskType { | ||
public const ID = 'core:text2text:changetone'; | ||
|
||
public function __construct( | ||
private IL10N $l, | ||
) { | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
public function getName(): string { | ||
return $this->l->t('Change Tone'); | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
public function getDescription(): string { | ||
return $this->l->t('Change the tone of a piece of text.'); | ||
} | ||
|
||
/** | ||
* @return string | ||
*/ | ||
public function getId(): string { | ||
return self::ID; | ||
} | ||
|
||
/** | ||
* @return ShapeDescriptor[] | ||
*/ | ||
public function getInputShape(): array { | ||
return [ | ||
'input' => new ShapeDescriptor( | ||
$this->l->t('Input text'), | ||
$this->l->t('Write a text that you want the assistant to rewrite in another tone.'), | ||
EShapeType::Text, | ||
), | ||
'tone' => new ShapeDescriptor( | ||
$this->l->t('Desired tone'), | ||
$this->l->t('In which tone should your text be rewritten?'), | ||
EShapeType::Enum, | ||
), | ||
]; | ||
} | ||
|
||
/** | ||
* @return ShapeDescriptor[] | ||
*/ | ||
public function getOutputShape(): array { | ||
return [ | ||
'output' => new ShapeDescriptor( | ||
$this->l->t('Generated response'), | ||
$this->l->t('The rewritten text in the desired tone, written by the assistant:'), | ||
EShapeType::Text | ||
), | ||
]; | ||
} | ||
} |
101 changes: 101 additions & 0 deletions
101
lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/** | ||
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors | ||
* SPDX-License-Identifier: AGPL-3.0-or-later | ||
*/ | ||
|
||
namespace OCP\TaskProcessing\TaskTypes; | ||
|
||
use OCP\IL10N; | ||
use OCP\TaskProcessing\EShapeType; | ||
use OCP\TaskProcessing\ITaskType; | ||
use OCP\TaskProcessing\ShapeDescriptor; | ||
|
||
/** | ||
* This is the task processing task type for text reformulation | ||
* @since 31.0.0 | ||
*/ | ||
class TextToTextChatWithTools implements ITaskType { | ||
public const ID = 'core:text2text:chatwithtools'; | ||
|
||
public function __construct( | ||
private IL10N $l, | ||
) { | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
public function getName(): string { | ||
return $this->l->t('Chat with tools'); | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
public function getDescription(): string { | ||
return $this->l->t('Chat with the language model with tool calling support.'); | ||
} | ||
|
||
/** | ||
* @return string | ||
*/ | ||
public function getId(): string { | ||
return self::ID; | ||
} | ||
|
||
/** | ||
* @return ShapeDescriptor[] | ||
*/ | ||
public function getInputShape(): array { | ||
return [ | ||
'system_prompt' => new ShapeDescriptor( | ||
$this->l->t('System prompt'), | ||
$this->l->t('Define rules and assumptions that the assistant should follow during the conversation.'), | ||
EShapeType::Text | ||
), | ||
'input' => new ShapeDescriptor( | ||
$this->l->t('Chat message'), | ||
$this->l->t('Describe a task that you want the assistant to do or ask a question'), | ||
EShapeType::Text | ||
), | ||
'tool_message' => new ShapeDescriptor( | ||
$this->l->t('Tool message'), | ||
$this->l->t('The result of tool calls in the last interaction'), | ||
EShapeType::Text | ||
), | ||
'history' => new ShapeDescriptor( | ||
$this->l->t('Chat history'), | ||
$this->l->t('The history of chat messages before the current message, starting with a message by the user'), | ||
EShapeType::ListOfTexts | ||
), | ||
// See https://platform.openai.com/docs/api-reference/chat/create#chat-create-tools for the format | ||
'tools' => new ShapeDescriptor( | ||
$this->l->t('Available tools'), | ||
$this->l->t('The available tools in JSON format'), | ||
EShapeType::Text | ||
), | ||
]; | ||
} | ||
|
||
/** | ||
* @return ShapeDescriptor[] | ||
*/ | ||
public function getOutputShape(): array { | ||
return [ | ||
'output' => new ShapeDescriptor( | ||
$this->l->t('Generated response'), | ||
$this->l->t('The response from the chat model'), | ||
EShapeType::Text | ||
), | ||
'tool_calls' => new ShapeDescriptor( | ||
$this->l->t('Tool calls'), | ||
$this->l->t('Tools call instructions from the model in JSON format'), | ||
EShapeType::Text | ||
), | ||
]; | ||
} | ||
} |