|
1 |
| -# FILE: php-symfony-neuron/config/services.yaml |
2 |
| -# Purpose: Defines application services and default configurations. |
3 |
| - |
4 | 1 | parameters:
|
5 |
| - llm.api_key: '%env(GENAI_API_KEY)%' |
6 |
| - llm.base_url: '%env(GENAI_BASE_URL)%' |
7 |
| - llm.model: '%env(GENAI_MODEL)%' |
8 |
| - use_mock_data: '%env(bool:USE_MOCK_DATA)%' |
9 |
| - alpha_vantage.api_key: '%env(ALPHA_VANTAGE_API_KEY)%' |
10 |
| - kaleidoscope_api.key: '%env(KALEIDOSCOPE_API_KEY)%' # API key for Kaleidoscope API |
| 2 | + app.rapid_api_key: '%env(resolve:RAPID_API_KEY)%' |
| 3 | + app.genai_api_key: '%env(resolve:GENAI_API_KEY)%' |
| 4 | + app.genai_base_url: '%env(resolve:GENAI_BASE_URL)%' |
| 5 | + app.genai_model: '%env(resolve:GENAI_MODEL)%' |
11 | 6 |
|
12 | 7 | services:
|
13 |
| - # Default configuration for services in *this* file |
| 8 | + # default configuration for services in *this* file |
14 | 9 | _defaults:
|
15 |
| - autowire: true # Automatically injects dependencies |
16 |
| - autoconfigure: true # Automatically registers services |
17 |
| - bind: |
18 |
| - Psr\Log\LoggerInterface: '@logger' |
19 |
| - # API keys are best bound in package configs or injected via constructor args |
| 10 | + autowire: true # Automatically injects dependencies in your services. |
| 11 | + autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. |
20 | 12 |
|
21 |
| - # Makes classes in src/ available to be used as services |
| 13 | + # makes classes in src/ available to be used as services |
| 14 | + # this creates a service per class whose id is the fully-qualified class name |
22 | 15 | App\:
|
23 | 16 | resource: '../src/'
|
24 | 17 | exclude:
|
| 18 | + - '../src/DependencyInjection/' |
25 | 19 | - '../src/Entity/'
|
26 | 20 | - '../src/Kernel.php'
|
27 | 21 |
|
28 |
| - # Configure LLM services explicitly |
29 |
| - App\Service\LlmClientFactory: |
30 |
| - arguments: |
31 |
| - $apiKey: '%llm.api_key%' |
32 |
| - $baseUrl: '%llm.base_url%' |
33 |
| - $model: '%llm.model%' |
| 22 | + # controllers are imported separately to make sure services can be injected |
| 23 | + # as action arguments even if you don't extend any base controller class |
| 24 | + App\Controller\: |
| 25 | + resource: '../src/Controller/' |
| 26 | + tags: ['controller.service_arguments'] |
34 | 27 |
|
35 |
| - # Configure NeuronAiService explicitly with the LlmClientFactory dependency |
36 |
| - App\Service\NeuronAiService: |
37 |
| - arguments: |
38 |
| - $clientFactory: '@App\Service\LlmClientFactory' |
| 28 | + # add more service definitions when explicit configuration is needed |
| 29 | + # please note that last definitions always *replace* previous ones |
39 | 30 |
|
40 |
| - # --- Define ALL Concrete Implementations (Real & Mock) --- |
41 |
| - # Alpha Vantage |
42 |
| - App\Service\ApiClient\AlphaVantageClient: |
43 |
| - public: true |
44 |
| - arguments: |
45 |
| - $httpClient: '@http_client' |
46 |
| - $params: '@parameter_bag' |
47 |
| - $logger: '@logger' |
48 |
| - |
49 |
| - App\Service\ApiClient\MockAlphaVantageClient: |
50 |
| - public: true |
51 |
| - |
52 |
| - # Yahoo Finance |
| 31 | + # Yahoo Finance API Configuration |
53 | 32 | App\Service\ApiClient\YahooFinanceClient:
|
54 |
| - public: true |
55 |
| - arguments: |
56 |
| - $httpClient: '@http_client' |
57 |
| - $params: '@parameter_bag' |
58 |
| - $logger: '@logger' |
59 |
| - |
60 |
| - App\Service\ApiClient\MockYahooFinanceClient: |
61 |
| - public: true |
62 |
| - |
63 |
| - # SEC API (Kaleidoscope) |
64 |
| - App\Service\ApiClient\SecApiClient: |
65 |
| - public: true |
66 |
| - arguments: |
67 |
| - $httpClient: '@http_client' |
68 |
| - $params: '@parameter_bag' |
69 |
| - $logger: '@logger' |
70 |
| - |
71 |
| - App\Service\ApiClient\MockSecApiClient: |
72 |
| - public: true |
73 |
| - |
74 |
| - # News API |
75 |
| - App\Service\ApiClient\NewsApiClient: |
76 |
| - public: true |
77 | 33 | arguments:
|
78 |
| - $httpClient: '@http_client' |
79 | 34 | $params: '@parameter_bag'
|
80 |
| - $logger: '@logger' |
81 |
| - |
82 |
| - App\Service\ApiClient\MockNewsApiClient: |
83 |
| - public: true |
84 | 35 |
|
85 |
| - # Kaleidoscope API (Now the only SEC filings provider) |
86 |
| - App\Service\ApiClient\KaleidoscopeApiClient: |
87 |
| - public: true |
| 36 | + # Yahoo Finance API Service using the client |
| 37 | + App\Service\YahooFinanceService: |
88 | 38 | arguments:
|
89 |
| - $httpClient: '@http_client' |
90 |
| - $params: '@parameter_bag' |
91 |
| - $logger: '@logger' |
92 |
| - |
93 |
| - App\Service\ApiClient\MockKaleidoscopeApiClient: |
94 |
| - public: true |
| 39 | + $rapidApiKey: '%app.rapid_api_key%' |
| 40 | + $useMockData: '%env(default:false:bool:USE_MOCK_DATA)%' |
95 | 41 |
|
96 |
| - # LinkedIn API |
97 |
| - App\Service\ApiClient\LinkedInApiClient: |
98 |
| - public: true |
| 42 | + # Stock Clients Factory Configuration |
| 43 | + App\Service\ApiClient\StockClientsFactory: |
99 | 44 | arguments:
|
100 |
| - $params: '@parameter_bag' |
101 |
| - $logger: '@logger' |
102 |
| - $requestStack: '@request_stack' |
103 |
| - |
104 |
| - App\Service\ApiClient\MockLinkedInApiClient: |
105 |
| - public: true |
106 |
| - |
107 |
| - # LinkedIn Client Factory |
108 |
| - App\Service\ApiClient\LinkedInClientFactory.locator: |
109 |
| - public: true |
110 |
| - class: Symfony\Component\DependencyInjection\ServiceLocator |
111 |
| - tags: ['container.service_locator'] |
112 |
| - arguments: |
113 |
| - - |
114 |
| - App\Service\ApiClient\LinkedInApiClient: '@App\Service\ApiClient\LinkedInApiClient' |
115 |
| - App\Service\ApiClient\MockLinkedInApiClient: '@App\Service\ApiClient\MockLinkedInApiClient' |
| 45 | + $useMockData: '%env(default:false:bool:USE_MOCK_DATA)%' |
116 | 46 |
|
| 47 | + # LinkedIn Client Factory Configuration |
117 | 48 | App\Service\ApiClient\LinkedInClientFactory:
|
118 |
| - public: true |
119 |
| - arguments: |
120 |
| - $locator: '@App\Service\ApiClient\LinkedInClientFactory.locator' |
121 |
| - $useMockData: '%env(bool:USE_MOCK_DATA)%' |
122 |
| - tags: ['container.service_subscriber'] |
123 |
| - |
124 |
| - # SEC API Client Factory (Kaleidoscope only) |
125 |
| - App\Service\ApiClient\SecApiClientFactory.locator: |
126 |
| - public: true |
127 |
| - class: Symfony\Component\DependencyInjection\ServiceLocator |
128 |
| - tags: ['container.service_locator'] |
129 | 49 | arguments:
|
130 |
| - - |
131 |
| - App\Service\ApiClient\KaleidoscopeApiClient: '@App\Service\ApiClient\KaleidoscopeApiClient' |
132 |
| - App\Service\ApiClient\MockKaleidoscopeApiClient: '@App\Service\ApiClient\MockKaleidoscopeApiClient' |
| 50 | + $useMockData: '%env(default:false:bool:USE_MOCK_DATA)%' |
133 | 51 |
|
134 |
| - App\Service\ApiClient\SecApiClientFactory: |
135 |
| - public: true |
| 52 | + # LLM Client Factory Configuration |
| 53 | + App\Service\LlmClientFactory: |
136 | 54 | arguments:
|
137 |
| - $locator: '@App\Service\ApiClient\SecApiClientFactory.locator' |
138 |
| - $useMockData: '%env(bool:USE_MOCK_DATA)%' |
139 |
| - $logger: '@logger' |
140 |
| - tags: ['container.service_subscriber'] |
| 55 | + $apiKey: '%app.genai_api_key%' |
| 56 | + $baseUrl: '%app.genai_base_url%' |
| 57 | + $model: '%app.genai_model%' |
141 | 58 |
|
142 |
| - # Define the stock data cache service |
143 |
| - stock_data.cache: |
144 |
| - class: Symfony\Component\Cache\Adapter\FilesystemAdapter |
| 59 | + # Neuron AI Service Configuration |
| 60 | + App\Service\NeuronAiService: |
145 | 61 | arguments:
|
146 |
| - $namespace: 'stock_data' |
147 |
| - $defaultLifetime: 3600 |
148 |
| - $directory: '%kernel.cache_dir%/stock_data' |
| 62 | + $clientFactory: '@App\Service\LlmClientFactory' |
0 commit comments