55namespace Cortex ;
66
77use Cortex \Facades \LLM ;
8+ use Cortex \Prompts \Prompt ;
89use Cortex \Facades \Embeddings ;
910use Cortex \Tasks \Enums \TaskType ;
11+ use Cortex \Prompts \Enums \PromptType ;
1012use Cortex \Tasks \Builders \TextTaskBuilder ;
13+ use Cortex \Prompts \Contracts \PromptBuilder ;
1114use Cortex \LLM \Contracts \LLM as LLMContract ;
12- use Cortex \Prompts \Builders \ChatPromptBuilder ;
1315use Cortex \LLM \Data \Messages \MessageCollection ;
1416use Cortex \Tasks \Builders \StructuredTaskBuilder ;
1517use Cortex \Embeddings \Contracts \Embeddings as EmbeddingsContract ;
1618
1719class Cortex
1820{
1921 /**
20- * Create a chat prompt builder.
22+ * Create a prompt builder or factory .
2123 *
22- * @param \Cortex\LLM\Data\Messages\MessageCollection|array<int, \Cortex\LLM\Contracts\Message>|string $messages
24+ * @param \Cortex\LLM\Data\Messages\MessageCollection|array<int, \Cortex\LLM\Contracts\Message>|string|null $messages
25+ *
26+ * @return ($messages is null ? \Cortex\Prompts\Prompt : ($messages is string ? \Cortex\Prompts\Builders\TextPromptBuilder : \Cortex\Prompts\Builders\ChatPromptBuilder))
2327 */
2428 public static function prompt (
25- MessageCollection |array |string |null $ messages ,
26- ): ChatPromptBuilder {
27- $ builder = new ChatPromptBuilder ();
28-
29- if ($ messages !== null ) {
30- $ builder ->messages ($ messages );
29+ MessageCollection |array |string |null $ messages = null ,
30+ ): Prompt |PromptBuilder {
31+ if (func_num_args () === 0 ) {
32+ return new Prompt ();
3133 }
3234
33- return $ builder ;
35+ return is_string ($ messages )
36+ ? Prompt::builder (PromptType::Text)->text ($ messages )
37+ : Prompt::builder (PromptType::Chat)->messages ($ messages );
3438 }
3539
3640 /**
@@ -47,9 +51,15 @@ public static function llm(?string $provider = null, ?string $model = null): LLM
4751 return $ llm ;
4852 }
4953
50- public static function embeddings (?string $ driver = null ): EmbeddingsContract
54+ public static function embeddings (?string $ driver = null , ? string $ model = null ): EmbeddingsContract
5155 {
52- return Embeddings::driver ($ driver );
56+ $ embeddings = Embeddings::driver ($ driver );
57+
58+ if ($ model !== null ) {
59+ $ embeddings ->withModel ($ model );
60+ }
61+
62+ return $ embeddings ;
5363 }
5464
5565 /**
0 commit comments