4
4
5
5
namespace PhpLlm \LlmChainBundle \DependencyInjection ;
6
6
7
+ use PhpLlm \LlmChain \PlatformInterface ;
8
+ use PhpLlm \LlmChain \Store \StoreInterface ;
7
9
use Symfony \Component \Config \Definition \Builder \TreeBuilder ;
8
10
use Symfony \Component \Config \Definition \ConfigurationInterface ;
9
11
@@ -16,61 +18,134 @@ public function getConfigTreeBuilder(): TreeBuilder
16
18
17
19
$ rootNode
18
20
->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 ()
29
45
->end ()
30
46
->end ()
31
47
->end ()
32
- ->arrayNode ('llms ' )
48
+ ->arrayNode ('chain ' )
33
49
->normalizeKeys (false )
34
50
->useAttributeAsKey ('name ' )
35
51
->arrayPrototype ()
36
52
->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 ()
38
69
->end ()
39
70
->end ()
40
71
->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 ()
47
121
->end ()
48
122
->end ()
49
123
->end ()
50
- ->arrayNode ('stores ' )
124
+ ->arrayNode ('embedder ' )
51
125
->normalizeKeys (false )
52
126
->useAttributeAsKey ('name ' )
53
127
->arrayPrototype ()
54
128
->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 ()
72
146
->end ()
73
147
->end ()
148
+ ->end ()
74
149
->end ()
75
150
;
76
151
0 commit comments