new(whatsapp.gblib): LLM SQL.
This commit is contained in:
parent
5965cb1e35
commit
8dd7ac5597
2 changed files with 21 additions and 0 deletions
|
@ -367,6 +367,11 @@ export class GBVMService extends GBService {
|
|||
if (!min[connectionName]) {
|
||||
GBLogEx.info(min, `Loading custom connection ${connectionName}...`);
|
||||
min[connectionName] = new Sequelize(storageName, username, password, sequelizeOptions);
|
||||
min[`llmconnection`] ={
|
||||
type: dialect,
|
||||
username,
|
||||
database: storageName, password};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,8 @@ import { RunnableSequence } from '@langchain/core/runnables';
|
|||
import { DynamicStructuredTool } from '@langchain/core/tools';
|
||||
import { convertToOpenAITool } from '@langchain/core/utils/function_calling';
|
||||
import { ChatOpenAI, OpenAI } from '@langchain/openai';
|
||||
import { SqlDatabaseChain } from 'langchain/chains/sql_db';
|
||||
|
||||
import { GBMinInstance } from 'botlib';
|
||||
import * as Fs from 'fs';
|
||||
import { jsonSchemaToZod } from 'json-schema-to-zod';
|
||||
|
@ -61,6 +63,7 @@ import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js';
|
|||
import { GBVMService } from '../../basic.gblib/services/GBVMService.js';
|
||||
import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js';
|
||||
import { pagespeedonline } from 'googleapis/build/src/apis/pagespeedonline/index.js';
|
||||
import { SqlDatabase } from 'langchain/dist/sql_db.js';
|
||||
|
||||
export interface CustomOutputParserFields {}
|
||||
export type ExpectedOutput = any;
|
||||
|
@ -467,6 +470,19 @@ export class ChatServices {
|
|||
result = await conversationalToolChain.invoke({
|
||||
question
|
||||
});
|
||||
} else if (LLMMode === 'sql') {
|
||||
|
||||
const db = await SqlDatabase.fromDataSourceParams({
|
||||
appDataSource: min[`llmconnection`],
|
||||
});
|
||||
|
||||
const chain = new SqlDatabaseChain({
|
||||
llm: model,
|
||||
database: db
|
||||
});
|
||||
|
||||
result = await chain.run(question);
|
||||
|
||||
} else if (LLMMode === 'nochain') {
|
||||
result = await (tools.length > 0 ? modelWithTools : model).invoke(`
|
||||
${systemPrompt}
|
||||
|
|
Loading…
Add table
Reference in a new issue