sandbox connected and streaming
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
||||
import type { FastifyBaseLogger } from 'fastify';
|
||||
import { LLMProviderFactory, type ModelConfig, LLMProvider, type LicenseModelsConfig } from './provider.js';
|
||||
import type { UserLicense } from '../types/user.js';
|
||||
import type { License } from '../types/user.js';
|
||||
|
||||
/**
|
||||
* Model routing strategies
|
||||
@@ -39,8 +39,9 @@ export class ModelRouter {
|
||||
*/
|
||||
async route(
|
||||
message: string,
|
||||
license: UserLicense,
|
||||
strategy: RoutingStrategy = RoutingStrategy.USER_PREFERENCE
|
||||
license: License,
|
||||
strategy: RoutingStrategy = RoutingStrategy.USER_PREFERENCE,
|
||||
userId?: string
|
||||
): Promise<BaseChatModel> {
|
||||
let modelConfig: ModelConfig;
|
||||
|
||||
@@ -67,7 +68,7 @@ export class ModelRouter {
|
||||
|
||||
this.logger.info(
|
||||
{
|
||||
userId: license.userId,
|
||||
userId,
|
||||
strategy,
|
||||
provider: modelConfig.provider,
|
||||
model: modelConfig.model,
|
||||
@@ -81,9 +82,9 @@ export class ModelRouter {
|
||||
/**
|
||||
* Route based on user's preferred model (if set in license)
|
||||
*/
|
||||
private routeByUserPreference(license: UserLicense): ModelConfig {
|
||||
private routeByUserPreference(license: License): ModelConfig {
|
||||
// Check if user has custom model preference
|
||||
const preferredModel = (license as any).preferredModel as ModelConfig | undefined;
|
||||
const preferredModel = license.preferredModel as ModelConfig | undefined;
|
||||
|
||||
if (preferredModel && this.isModelAllowed(preferredModel, license)) {
|
||||
return preferredModel;
|
||||
@@ -96,7 +97,7 @@ export class ModelRouter {
|
||||
/**
|
||||
* Route based on query complexity
|
||||
*/
|
||||
private routeByComplexity(message: string, license: UserLicense): ModelConfig {
|
||||
private routeByComplexity(message: string, license: License): ModelConfig {
|
||||
const isComplex = this.isComplexQuery(message);
|
||||
|
||||
// Use configuration if available
|
||||
@@ -127,7 +128,7 @@ export class ModelRouter {
|
||||
/**
|
||||
* Route based on license tier
|
||||
*/
|
||||
private routeByLicenseTier(license: UserLicense): ModelConfig {
|
||||
private routeByLicenseTier(license: License): ModelConfig {
|
||||
// Use configuration if available
|
||||
if (this.licenseModels) {
|
||||
const tierConfig = this.licenseModels[license.licenseType];
|
||||
@@ -155,7 +156,7 @@ export class ModelRouter {
|
||||
/**
|
||||
* Route to cheapest available model
|
||||
*/
|
||||
private routeByCost(license: UserLicense): ModelConfig {
|
||||
private routeByCost(license: License): ModelConfig {
|
||||
// Use configuration if available
|
||||
if (this.licenseModels) {
|
||||
const tierConfig = this.licenseModels[license.licenseType];
|
||||
@@ -171,7 +172,7 @@ export class ModelRouter {
|
||||
/**
|
||||
* Check if model is allowed for user's license
|
||||
*/
|
||||
private isModelAllowed(model: ModelConfig, license: UserLicense): boolean {
|
||||
private isModelAllowed(model: ModelConfig, license: License): boolean {
|
||||
// Use configuration if available
|
||||
if (this.licenseModels) {
|
||||
const tierConfig = this.licenseModels[license.licenseType];
|
||||
|
||||
Reference in New Issue
Block a user