@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
72 lines (61 loc) • 2.24 kB
text/typescript
// @vitest-environment node
import { ModelProvider } from 'model-bank';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { testProvider } from '../../providerTestUtils';
import { LobeInfiniAI } from './index';
testProvider({
Runtime: LobeInfiniAI,
provider: ModelProvider.InfiniAI,
defaultBaseURL: 'https://cloud.infini-ai.com/maas/v1',
chatDebugEnv: 'DEBUG_INFINIAI_CHAT_COMPLETION',
chatModel: 'gpt-3.5-turbo',
invalidErrorType: 'InvalidProviderAPIKey',
bizErrorType: 'ProviderBizError',
test: {
skipAPICall: true,
skipErrorHandle: true,
},
});
describe('LobeInfiniAI - custom features', () => {
let instance: InstanceType<typeof LobeInfiniAI>;
beforeEach(() => {
instance = new LobeInfiniAI({ apiKey: 'test_api_key' });
vi.spyOn(instance['client'].chat.completions, 'create').mockResolvedValue(
new ReadableStream() as any,
);
});
describe('handlePayload', () => {
it('should add enable_thinking when thinking is enabled', async () => {
await instance.chat({
messages: [{ content: 'Hello', role: 'user' }],
model: 'deepseek-v3',
thinking: {
type: 'enabled',
budget_tokens: 1000,
},
});
const calledPayload = (instance['client'].chat.completions.create as any).mock.calls[0][0];
expect(calledPayload.enable_thinking).toBe(true);
});
it('should not add enable_thinking when thinking is disabled', async () => {
await instance.chat({
messages: [{ content: 'Hello', role: 'user' }],
model: 'deepseek-v3',
thinking: {
budget_tokens: 1000,
type: 'disabled',
},
});
const calledPayload = (instance['client'].chat.completions.create as any).mock.calls[0][0];
expect(calledPayload.enable_thinking).toBe(false);
});
it('should set enable_thinking to false when thinking is undefined', async () => {
await instance.chat({
messages: [{ content: 'Hello', role: 'user' }],
model: 'deepseek-v3',
});
const calledPayload = (instance['client'].chat.completions.create as any).mock.calls[0][0];
expect(calledPayload.enable_thinking).toBe(false);
});
});
});