Skip to content

Commit ffe27ce

Browse files
committed
Massive refactoring: Turn LanguageModel OCP API into TextProcessing API
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
1 parent bd45c43 commit ffe27ce

31 files changed

Lines changed: 553 additions & 748 deletions

core/Controller/LanguageModelApiController.php renamed to core/Controller/TextProcessingApiController.php

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,24 @@
3232
use OCP\Common\Exception\NotFoundException;
3333
use OCP\IL10N;
3434
use OCP\IRequest;
35-
use OCP\LanguageModel\AbstractLanguageModelTask;
36-
use OCP\LanguageModel\ILanguageModelManager;
35+
use OCP\TextProcessing\ITaskType;
36+
use OCP\TextProcessing\Task;
37+
use OCP\TextProcessing\IManager;
3738
use OCP\PreConditionNotMetException;
39+
use Psr\Container\ContainerExceptionInterface;
40+
use Psr\Container\ContainerInterface;
41+
use Psr\Container\NotFoundExceptionInterface;
42+
use Psr\Log\LoggerInterface;
3843

39-
class LanguageModelApiController extends \OCP\AppFramework\OCSController {
44+
class TextProcessingApiController extends \OCP\AppFramework\OCSController {
4045
public function __construct(
41-
string $appName,
42-
IRequest $request,
43-
private ILanguageModelManager $languageModelManager,
44-
private IL10N $l,
45-
private ?string $userId,
46+
string $appName,
47+
IRequest $request,
48+
private IManager $languageModelManager,
49+
private IL10N $l,
50+
private ?string $userId,
51+
private ContainerInterface $container,
52+
private LoggerInterface $logger,
4653
) {
4754
parent::__construct($appName, $request);
4855
}
@@ -51,13 +58,31 @@ public function __construct(
5158
* This endpoint returns all available LanguageModel task types
5259
*
5360
* @PublicPage
54-
* @return DataResponse<Http::STATUS_OK, array{types: string[]}, array{}>
61+
* @return DataResponse<Http::STATUS_OK, array{types: list<array{id: string, name: string, description: string}>}, array{}>
5562
*
5663
* 200: Task types returned
5764
*/
5865
public function taskTypes(): DataResponse {
66+
$typeClasses = $this->languageModelManager->getAvailableTaskTypes();
67+
/** @var list<array{id: string, name: string, description: string}> $types */
68+
$types = [];
69+
foreach ($typeClasses as $typeClass) {
70+
/** @var ITaskType $object */
71+
try {
72+
$object = $this->container->get($typeClass);
73+
} catch (NotFoundExceptionInterface|ContainerExceptionInterface $e) {
74+
$this->logger->warning('Could not find ' . $typeClass, ['exception' => $e]);
75+
continue;
76+
}
77+
$types[] = [
78+
'id' => $typeClass,
79+
'name' => $object->getName(),
80+
'description' => $object->getDescription(),
81+
];
82+
}
83+
5984
return new DataResponse([
60-
'types' => $this->languageModelManager->getAvailableTaskTypes(),
85+
'types' => $types,
6186
]);
6287
}
6388

@@ -79,14 +104,13 @@ public function taskTypes(): DataResponse {
79104
*/
80105
public function schedule(string $input, string $type, string $appId, string $identifier = ''): DataResponse {
81106
try {
82-
$task = AbstractLanguageModelTask::factory($type, $input, $this->userId, $appId, $identifier);
83-
} catch (InvalidArgumentException $e) {
107+
$task = Task::factory($type, $input, $this->userId, $appId, $identifier);
108+
} catch (InvalidArgumentException) {
84109
return new DataResponse(['message' => $this->l->t('Requested task type does not exist')], Http::STATUS_BAD_REQUEST);
85110
}
86111
try {
87112
$this->languageModelManager->scheduleTask($task);
88113

89-
/** @var array{id: int|null, type: string, status: int, userId: string|null, appId: string, input: string, output: string|null, identifier: string} $json */
90114
$json = $task->jsonSerialize();
91115

92116
return new DataResponse([
@@ -117,7 +141,6 @@ public function getTask(int $id): DataResponse {
117141
return new DataResponse(['message' => $this->l->t('Task not found')], Http::STATUS_NOT_FOUND);
118142
}
119143

120-
/** @var array{id: int|null, type: string, status: int, userId: string|null, appId: string, input: string, output: string|null, identifier: string} $json */
121144
$json = $task->jsonSerialize();
122145

123146
return new DataResponse([

core/routes.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@
146146
['root' => '/translation', 'name' => 'TranslationApi#languages', 'url' => '/languages', 'verb' => 'GET'],
147147
['root' => '/translation', 'name' => 'TranslationApi#translate', 'url' => '/translate', 'verb' => 'POST'],
148148

149-
['root' => '/languagemodel', 'name' => 'LanguageModelApi#taskTypes', 'url' => '/tasktypes', 'verb' => 'GET'],
150-
['root' => '/languagemodel', 'name' => 'LanguageModelApi#schedule', 'url' => '/schedule', 'verb' => 'POST'],
151-
['root' => '/languagemodel', 'name' => 'LanguageModelApi#getTask', 'url' => '/task/{id}', 'verb' => 'GET'],
149+
['root' => '/textprocessing', 'name' => 'TextProcessingApi#taskTypes', 'url' => '/tasktypes', 'verb' => 'GET'],
150+
['root' => '/textprocessing', 'name' => 'TextProcessingApi#schedule', 'url' => '/schedule', 'verb' => 'POST'],
151+
['root' => '/textprocessing', 'name' => 'TextProcessingApi#getTask', 'url' => '/task/{id}', 'verb' => 'GET'],
152152
],
153153
]);
154154

lib/private/AppFramework/Bootstrap/RegistrationContext.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
use OCP\Calendar\Resource\IBackend as IResourceBackend;
3434
use OCP\Calendar\Room\IBackend as IRoomBackend;
3535
use OCP\Collaboration\Reference\IReferenceProvider;
36-
use OCP\LanguageModel\ILanguageModelProvider;
36+
use OCP\TextProcessing\IProvider as ITextProcessingProvider;
3737
use OCP\SpeechToText\ISpeechToTextProvider;
3838
use OCP\Talk\ITalkBackend;
3939
use OCP\Translation\ITranslationProvider;
@@ -116,8 +116,8 @@ class RegistrationContext {
116116
/** @var ServiceRegistration<ISpeechToTextProvider>[] */
117117
private $speechToTextProviders = [];
118118

119-
/** @var ServiceRegistration<ILanguageModelProvider>[] */
120-
private $languageModelProviders = [];
119+
/** @var ServiceRegistration<ITextProcessingProvider>[] */
120+
private $textProcessingProviders = [];
121121

122122
/** @var ServiceRegistration<ICustomTemplateProvider>[] */
123123
private $templateProviders = [];
@@ -266,8 +266,8 @@ public function registerSpeechToTextProvider(string $providerClass): void {
266266
$providerClass
267267
);
268268
}
269-
public function registerLanguageModelProvider(string $providerClass): void {
270-
$this->context->registerLanguageModelProvider(
269+
public function registerTextProcessingProvider(string $providerClass): void {
270+
$this->context->registerTextProcessingProvider(
271271
$this->appId,
272272
$providerClass
273273
);
@@ -439,8 +439,8 @@ public function registerSpeechToTextProvider(string $appId, string $class): void
439439
$this->speechToTextProviders[] = new ServiceRegistration($appId, $class);
440440
}
441441

442-
public function registerLanguageModelProvider(string $appId, string $class): void {
443-
$this->languageModelProviders[] = new ServiceRegistration($appId, $class);
442+
public function registerTextProcessingProvider(string $appId, string $class): void {
443+
$this->textProcessingProviders[] = new ServiceRegistration($appId, $class);
444444
}
445445

446446
public function registerTemplateProvider(string $appId, string $class): void {
@@ -722,10 +722,10 @@ public function getSpeechToTextProviders(): array {
722722
}
723723

724724
/**
725-
* @return ServiceRegistration<ILanguageModelProvider>[]
725+
* @return ServiceRegistration<ITextProcessingProvider>[]
726726
*/
727-
public function getLanguageModelProviders(): array {
728-
return $this->languageModelProviders;
727+
public function getTextProcessingProviders(): array {
728+
return $this->textProcessingProviders;
729729
}
730730

731731
/**

lib/private/Repair/AddRemoveOldTasksBackgroundJob.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626
namespace OC\Repair;
2727

28-
use OC\LanguageModel\RemoveOldTasksBackgroundJob;
28+
use OC\TextProcessing\RemoveOldTasksBackgroundJob;
2929
use OCP\BackgroundJob\IJobList;
3030
use OCP\Migration\IOutput;
3131
use OCP\Migration\IRepairStep;

lib/private/Server.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@
110110
use OC\IntegrityCheck\Helpers\AppLocator;
111111
use OC\IntegrityCheck\Helpers\EnvironmentHelper;
112112
use OC\IntegrityCheck\Helpers\FileAccessHelper;
113-
use OC\LanguageModel\LanguageModelManager;
114113
use OC\LDAP\NullLDAPProviderFactory;
115114
use OC\KnownUser\KnownUserService;
116115
use OC\Lock\DBLockingProvider;
@@ -230,7 +229,6 @@
230229
use OCP\IUserManager;
231230
use OCP\IUserSession;
232231
use OCP\L10N\IFactory;
233-
use OCP\LanguageModel\ILanguageModelManager;
234232
use OCP\LDAP\ILDAPProvider;
235233
use OCP\LDAP\ILDAPProviderFactory;
236234
use OCP\Lock\ILockingProvider;
@@ -1472,7 +1470,7 @@ public function __construct($webRoot, \OC\Config $config) {
14721470

14731471
$this->registerAlias(IEventSourceFactory::class, EventSourceFactory::class);
14741472

1475-
$this->registerAlias(ILanguageModelManager::class, LanguageModelManager::class);
1473+
$this->registerAlias(\OCP\TextProcessing\IManager::class, \OC\TextProcessing\Manager::class);
14761474

14771475
$this->connectDispatcher();
14781476
}

lib/private/Setup.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
use InvalidArgumentException;
5454
use OC\Authentication\Token\PublicKeyTokenProvider;
5555
use OC\Authentication\Token\TokenCleanupJob;
56-
use OC\LanguageModel\RemoveOldTasksBackgroundJob;
56+
use OC\TextProcessing\RemoveOldTasksBackgroundJob;
5757
use OC\Log\Rotate;
5858
use OC\Preview\BackgroundCleanupJob;
5959
use OCP\AppFramework\Utility\ITimeFactory;
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@
2323
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2424
*/
2525

26-
namespace OC\LanguageModel\Db;
26+
namespace OC\TextProcessing\Db;
2727

2828
use OCP\AppFramework\Db\Entity;
29-
use OCP\LanguageModel\AbstractLanguageModelTask;
30-
use OCP\LanguageModel\ILanguageModelTask;
29+
use OCP\TextProcessing\Task as OCPTask;
3130

3231
/**
3332
* @method setType(string $type)
@@ -87,7 +86,7 @@ public function toRow(): array {
8786
}, self::$fields));
8887
}
8988

90-
public static function fromLanguageModelTask(ILanguageModelTask $task): Task {
89+
public static function fromPublicTask(OCPTask $task): Task {
9190
/** @var Task $task */
9291
$task = Task::fromParams([
9392
'id' => $task->getId(),
@@ -103,8 +102,8 @@ public static function fromLanguageModelTask(ILanguageModelTask $task): Task {
103102
return $task;
104103
}
105104

106-
public function toLanguageModelTask(): ILanguageModelTask {
107-
$task = AbstractLanguageModelTask::factory($this->getType(), $this->getInput(), $this->getuserId(), $this->getAppId(), $this->getIdentifier());
105+
public function toPublicTask(): OCPTask {
106+
$task = OCPTask::factory($this->getType(), $this->getInput(), $this->getuserId(), $this->getAppId(), $this->getIdentifier());
108107
$task->setId($this->getId());
109108
$task->setStatus($this->getStatus());
110109
$task->setOutput($this->getOutput());

lib/private/LanguageModel/Db/TaskMapper.php renamed to lib/private/TextProcessing/Db/TaskMapper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2424
*/
2525

26-
namespace OC\LanguageModel\Db;
26+
namespace OC\TextProcessing\Db;
2727

2828
use OCP\AppFramework\Db\DoesNotExistException;
2929
use OCP\AppFramework\Db\Entity;

0 commit comments

Comments
 (0)