@@ -13,12 +13,10 @@ import { ICompletionProviderManager } from '@jupyterlab/completer';
1313import { INotebookTracker } from '@jupyterlab/notebook' ;
1414import { IRenderMimeRegistry } from '@jupyterlab/rendermime' ;
1515import { ISettingRegistry } from '@jupyterlab/settingregistry' ;
16- import { CodestralProvider } from './provider' ;
17- import MistralClient from '@mistralai/mistralai' ;
16+ import { ChatMistralAI , MistralAI } from '@langchain/mistralai' ;
1817
1918import { CodestralHandler } from './handler' ;
20-
21- const mistralClient = new MistralClient ( ) ;
19+ import { CodestralProvider } from './provider' ;
2220
2321const inlineProviderPlugin : JupyterFrontEndPlugin < void > = {
2422 id : 'jupyterlab-codestral:inline-provider' ,
@@ -29,6 +27,10 @@ const inlineProviderPlugin: JupyterFrontEndPlugin<void> = {
2927 manager : ICompletionProviderManager ,
3028 settingRegistry : ISettingRegistry
3129 ) : void => {
30+ const mistralClient = new MistralAI ( {
31+ model : 'codestral-latest' ,
32+ apiKey : 'TMP'
33+ } ) ;
3234 const provider = new CodestralProvider ( { mistralClient } ) ;
3335 manager . registerInlineProvider ( provider ) ;
3436
@@ -73,6 +75,10 @@ const chatPlugin: JupyterFrontEndPlugin<void> = {
7375 } ) ;
7476 }
7577
78+ const mistralClient = new ChatMistralAI ( {
79+ model : 'codestral-latest' ,
80+ apiKey : 'TMP'
81+ } ) ;
7682 const chatHandler = new CodestralHandler ( {
7783 mistralClient,
7884 activeCellManager : activeCellManager
@@ -88,6 +94,25 @@ const chatPlugin: JupyterFrontEndPlugin<void> = {
8894 chatHandler . config = { sendWithShiftEnter, enableCodeToolbar } ;
8995 }
9096
97+ // TODO: handle the apiKey better
98+ settingsRegistry
99+ ?. load ( inlineProviderPlugin . id )
100+ . then ( settings => {
101+ const updateKey = ( ) => {
102+ const apiKey = settings . get ( 'apiKey' ) . composite as string ;
103+ mistralClient . apiKey = apiKey ;
104+ } ;
105+
106+ settings . changed . connect ( ( ) => updateKey ( ) ) ;
107+ updateKey ( ) ;
108+ } )
109+ . catch ( reason => {
110+ console . error (
111+ `Failed to load settings for ${ inlineProviderPlugin . id } ` ,
112+ reason
113+ ) ;
114+ } ) ;
115+
91116 Promise . all ( [ app . restored , settingsRegistry ?. load ( chatPlugin . id ) ] )
92117 . then ( ( [ , settings ] ) => {
93118 if ( ! settings ) {
0 commit comments