@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.
133 lines (123 loc) • 2.99 kB
text/typescript
import { LLMRoleType } from '@/types/llm';
import { MessageToolCall } from '@/types/message';
import { OpenAIFunctionCall } from './functionCall';
interface UserMessageContentPartText {
text: string;
type: 'text';
}
interface UserMessageContentPartImage {
image_url: {
detail?: 'auto' | 'low' | 'high';
url: string;
};
type: 'image_url';
}
export type UserMessageContentPart = UserMessageContentPartText | UserMessageContentPartImage;
export interface OpenAIChatMessage {
/**
* @title 内容
* @description 消息内容
*/
content: string | UserMessageContentPart[];
/**
* @deprecated
*/
function_call?: OpenAIFunctionCall;
name?: string;
/**
* 角色
* @description 消息发送者的角色
*/
role: LLMRoleType;
tool_call_id?: string;
tool_calls?: MessageToolCall[];
}
/**
* @title Chat Stream Payload
*/
export interface ChatStreamPayload {
/**
* 是否开启搜索
*/
enabledSearch?: boolean;
/**
* @title 控制生成文本中的惩罚系数,用于减少重复性
* @default 0
*/
frequency_penalty?: number;
/**
* @title 生成文本的最大长度
*/
max_tokens?: number;
/**
* @title 聊天信息列表
*/
messages: OpenAIChatMessage[];
/**
* @title 模型名称
*/
model: string;
/**
* @title 返回的文本数量
*/
n?: number;
/**
* 开启的插件列表
*/
plugins?: string[];
/**
* @title 控制生成文本中的惩罚系数,用于减少主题的变化
* @default 0
*/
presence_penalty?: number;
/**
* @default openai
*/
provider?: string;
/**
* @title 是否开启流式请求
* @default true
*/
stream?: boolean;
/**
* @title 生成文本的随机度量,用于控制文本的创造性和多样性
* @default 1
*/
temperature: number;
tool_choice?: string;
tools?: ChatCompletionTool[];
/**
* @title 控制生成文本中最高概率的单个令牌
* @default 1
*/
top_p?: number;
}
export interface ChatCompletionFunctions {
/**
* The description of what the function does.
* @type {string}
* @memberof ChatCompletionFunctions
*/
description?: string;
/**
* The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.
* @type {string}
* @memberof ChatCompletionFunctions
*/
name: string;
/**
* The parameters the functions accepts, described as a JSON Schema object. See the [guide](/docs/guides/gpt/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.
* @type {{ [key: string]: any }}
* @memberof ChatCompletionFunctions
*/
parameters?: {
[key: string]: any;
};
}
export interface ChatCompletionTool {
function: ChatCompletionFunctions;
/**
* The type of the tool. Currently, only `function` is supported.
*/
type: 'function';
}