diff --git a/src/EncodingFactory.php b/src/EncodingFactory.php index c7ab938..f241eaa 100644 --- a/src/EncodingFactory.php +++ b/src/EncodingFactory.php @@ -70,7 +70,7 @@ class EncodingFactory public static function registerModelToEncoding(string $modelName, string $encodingName) { if (array_key_exists($modelName, self::$modelToEncoding)) { - throw new Exception("{$modelName} already exists"); + throw new InvalidArgumentException("\"{$modelName}\" already exists in map"); } self::$modelToEncoding[$modelName] = $encodingName; diff --git a/tests/EncodingFactoryTest.php b/tests/EncodingFactoryTest.php index 33449f0..66d4a79 100644 --- a/tests/EncodingFactoryTest.php +++ b/tests/EncodingFactoryTest.php @@ -46,6 +46,22 @@ public function testCreateByModelNameWithNonExist() EncodingFactory::createByModelName('danny'); } + public function testRegisterModelToEncoding() + { + EncodingFactory::registerModelToEncoding('gpt-9000', 'cl100k_base'); + + $enc = EncodingFactory::createByModelName('gpt-9000'); + $this->assertSame('cl100k_base', $enc->getName()); + } + + public function testRegisterModelToEncodingAlreadyExists() + { + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage('"gpt-4" already exists in map'); + + EncodingFactory::registerModelToEncoding('gpt-4', 'cl100k_base'); + } + public function testRegisterEncoding() { EncodingFactory::registerEncoding('danny', function () {