44
55namespace PhpLlm \LlmChainBundle \DependencyInjection ;
66
7+ use PhpLlm \LlmChain \PlatformInterface ;
8+ use PhpLlm \LlmChain \Store \StoreInterface ;
79use Symfony \Component \Config \Definition \Builder \TreeBuilder ;
810use Symfony \Component \Config \Definition \ConfigurationInterface ;
911
@@ -16,61 +18,134 @@ public function getConfigTreeBuilder(): TreeBuilder
1618
1719 $ rootNode
1820 ->children ()
19- ->arrayNode ('platforms ' )
20- ->normalizeKeys (false )
21- ->useAttributeAsKey ('name ' )
22- ->arrayPrototype ()
23- ->children ()
24- ->enumNode ('type ' )->values (['openai ' , 'azure ' ])->isRequired ()->end ()
25- ->scalarNode ('api_key ' )->isRequired ()->end ()
26- ->scalarNode ('base_url ' )->end ()
27- ->scalarNode ('deployment ' )->end ()
28- ->scalarNode ('version ' )->info ('The used API version ' )->end ()
21+ ->arrayNode ('platform ' )
22+ ->children ()
23+ ->arrayNode ('anthropic ' )
24+ ->children ()
25+ ->scalarNode ('api_key ' )->isRequired ()->end ()
26+ ->scalarNode ('version ' )->defaultNull ()->end ()
27+ ->end ()
28+ ->end ()
29+ ->arrayNode ('azure ' )
30+ ->normalizeKeys (false )
31+ ->useAttributeAsKey ('name ' )
32+ ->arrayPrototype ()
33+ ->children ()
34+ ->scalarNode ('api_key ' )->isRequired ()->end ()
35+ ->scalarNode ('base_url ' )->isRequired ()->end ()
36+ ->scalarNode ('deployment ' )->isRequired ()->end ()
37+ ->scalarNode ('api_version ' )->info ('The used API version ' )->end ()
38+ ->end ()
39+ ->end ()
40+ ->end ()
41+ ->arrayNode ('openai ' )
42+ ->children ()
43+ ->scalarNode ('api_key ' )->isRequired ()->end ()
44+ ->end ()
2945 ->end ()
3046 ->end ()
3147 ->end ()
32- ->arrayNode ('llms ' )
48+ ->arrayNode ('chain ' )
3349 ->normalizeKeys (false )
3450 ->useAttributeAsKey ('name ' )
3551 ->arrayPrototype ()
3652 ->children ()
37- ->scalarNode ('platform ' )->end ()
53+ ->scalarNode ('platform ' )
54+ ->info ('Service name of platform ' )
55+ ->defaultValue (PlatformInterface::class)
56+ ->end ()
57+ ->arrayNode ('model ' )
58+ ->children ()
59+ ->scalarNode ('name ' )->isRequired ()->end ()
60+ ->scalarNode ('version ' )->defaultNull ()->end ()
61+ ->arrayNode ('options ' )
62+ ->scalarPrototype ()->end ()
63+ ->end ()
64+ ->end ()
65+ ->end ()
66+ ->arrayNode ('tools ' )
67+ ->scalarPrototype ()->end ()
68+ ->end ()
3869 ->end ()
3970 ->end ()
4071 ->end ()
41- ->arrayNode ('embeddings ' )
42- ->normalizeKeys (false )
43- ->useAttributeAsKey ('name ' )
44- ->arrayPrototype ()
45- ->children ()
46- ->scalarNode ('platform ' )->end ()
72+ ->arrayNode ('store ' )
73+ ->children ()
74+ ->arrayNode ('azure_search ' )
75+ ->normalizeKeys (false )
76+ ->useAttributeAsKey ('name ' )
77+ ->arrayPrototype ()
78+ ->children ()
79+ ->scalarNode ('endpoint ' )->isRequired ()->end ()
80+ ->scalarNode ('api_key ' )->isRequired ()->end ()
81+ ->scalarNode ('index_name ' )->isRequired ()->end ()
82+ ->scalarNode ('api_version ' )->isRequired ()->end ()
83+ ->scalarNode ('vector_field ' )->isRequired ()->end ()
84+ ->end ()
85+ ->end ()
86+ ->end ()
87+ ->arrayNode ('chroma_db ' )
88+ ->normalizeKeys (false )
89+ ->useAttributeAsKey ('name ' )
90+ ->arrayPrototype ()
91+ ->children ()
92+ ->scalarNode ('collection ' )->isRequired ()->end ()
93+ ->end ()
94+ ->end ()
95+ ->end ()
96+ ->arrayNode ('mongodb ' )
97+ ->normalizeKeys (false )
98+ ->useAttributeAsKey ('name ' )
99+ ->arrayPrototype ()
100+ ->children ()
101+ ->scalarNode ('database ' )->isRequired ()->end ()
102+ ->scalarNode ('collection ' )->isRequired ()->end ()
103+ ->scalarNode ('index_name ' )->isRequired ()->end ()
104+ ->scalarNode ('vector_field ' )->isRequired ()->end ()
105+ ->booleanNode ('bulk_write ' )->isRequired ()->end ()
106+ ->end ()
107+ ->end ()
108+ ->end ()
109+ ->arrayNode ('pinecone ' )
110+ ->normalizeKeys (false )
111+ ->useAttributeAsKey ('name ' )
112+ ->arrayPrototype ()
113+ ->children ()
114+ ->scalarNode ('namespace ' )->end ()
115+ ->arrayNode ('filter ' )
116+ ->scalarPrototype ()->end ()
117+ ->end ()
118+ ->integerNode ('top_k ' )->defaultValue (3 )->end ()
119+ ->end ()
120+ ->end ()
47121 ->end ()
48122 ->end ()
49123 ->end ()
50- ->arrayNode ('stores ' )
124+ ->arrayNode ('embedder ' )
51125 ->normalizeKeys (false )
52126 ->useAttributeAsKey ('name ' )
53127 ->arrayPrototype ()
54128 ->children ()
55- ->enumNode ( ' engine ' )-> values ([ ' azure-search ' , ' chroma-db ' , ' mongodb ' , ' pinecone ' ])-> isRequired ()-> end ( )
56- // Azure AI Search & MongoDB
57- -> scalarNode ( ' index_name ' )-> end ( )
58- // Azure AI Search
59- ->scalarNode ('api_key ' )-> end ( )
60- -> scalarNode ( ' api_version ' )-> end ( )
61- -> scalarNode ( ' endpoint ' )-> end ( )
62- // ChromaDB & MongoDB
63- ->scalarNode ( ' collection_name ' )-> end ( )
64- // MongoDB
65- ->scalarNode ('database_name ' )->end ()
66- ->scalarNode ('vector_field_name ' )->defaultValue ( ' vector ' )->end ()
67- -> booleanNode ( ' bulk_write ' )-> defaultValue ( false )-> end ( )
68- // Pinecone
69- -> arrayNode ( ' filter ' ) ->end ()
70- -> scalarNode ( ' namespace ' ) ->end ()
71- ->scalarNode ( ' top_k ' )-> end ()
129+ ->scalarNode ( ' store ' )
130+ -> info ( ' Service name of store ' )
131+ -> defaultValue (StoreInterface::class )
132+ -> end ()
133+ ->scalarNode ('platform ' )
134+ -> info ( ' Service name of platform ' )
135+ -> defaultValue (PlatformInterface::class )
136+ -> end ()
137+ ->arrayNode ( ' model ' )
138+ -> children ()
139+ ->scalarNode ('name ' )-> isRequired ( )->end ()
140+ ->scalarNode ('version ' )->defaultNull ( )->end ()
141+ -> arrayNode ( ' options ' )
142+ -> scalarPrototype ()-> end ()
143+ ->end ()
144+ ->end ()
145+ ->end ()
72146 ->end ()
73147 ->end ()
148+ ->end ()
74149 ->end ()
75150 ;
76151
0 commit comments