Package Exports
- ai-assistant-sdk
- ai-assistant-sdk/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ai-assistant-sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
AI Assistant SDK
一个功能强大、易于集成的AI助手SDK,让开发者能够轻松地在自己的应用程序中集成AI对话能力。
特性
- 简洁的API接口:易于使用的方法调用,降低集成门槛
- 多种AI模型支持:内置支持OpenAI的GPT模型,架构设计支持扩展到其他模型
- 上下文对话管理:自动维护对话历史,支持多轮对话
- 流式输出:支持实时获取AI响应,提升用户体验
- 参数可定制:支持调整温度、最大生成长度等参数
- 完整的TypeScript支持:提供完整的类型定义,提升开发体验
安装
使用npm安装:
npm install ai-assistant-sdk
使用yarn安装:
yarn add ai-assistant-sdk
快速开始
基本用法
// 导入AI助手
const { AIAssistant } = require('ai-assistant-sdk');
// 初始化AI助手
const assistant = new AIAssistant({
apiKey: 'your-api-key-here', // 替换为你的API密钥
model: 'gpt-3.5-turbo'
});
// 生成文本
async function generateText() {
try {
const result = await assistant.generateText('写一个关于人工智能的短段落');
console.log(result.text);
} catch (error) {
console.error('生成文本时出错:', error.message);
}
}
generateText();
创建对话
// 创建对话实例
const conversation = assistant.createConversation();
// 发送消息
async function haveConversation() {
try {
// 第一条消息
let response = await conversation.sendMessage('你好,我叫小明');
console.log('AI:', response.text);
// 第二条消息(AI会记住之前的对话)
response = await conversation.sendMessage('你能告诉我今天的天气吗?');
console.log('AI:', response.text);
} catch (error) {
console.error('对话时出错:', error.message);
}
}
haveConversation();
流式输出
// 使用流式输出
async function streamResponse() {
try {
console.log('AI响应:');
for await (const chunk of assistant.getModel().generateStream('解释什么是机器学习')) {
process.stdout.write(chunk); // 实时输出每个响应片段
}
} catch (error) {
console.error('流式输出时出错:', error.message);
}
}
streamResponse();
API参考
AIAssistant类
构造函数
new AIAssistant(options: AIAssistantOptions)
参数:
options.apiKey
: (必需) AI服务的API密钥options.model
: (必需) 使用的AI模型名称options.baseUrl
: (可选) AI服务的基础URL,默认为官方URLoptions.timeout
: (可选) 请求超时时间(毫秒),默认为30000options.debug
: (可选) 是否开启调试模式,默认为false
generateText方法
generateText(prompt: string, options?: GenerateOptions): Promise<ModelResponse>
参数:
prompt
: (必需) 生成文本的提示词options.temperature
: (可选) 控制输出的随机性,范围0-2,默认为0.7options.maxTokens
: (可选) 最大生成长度,默认为1000options.topP
: (可选) 控制结果的多样性,默认为1.0options.stop
: (可选) 停止序列数组
返回值:
text
: 生成的文本内容tokensUsed
: 使用的token数量信息model
: 使用的模型名称id
: 响应的唯一标识符
askQuestion方法
askQuestion(question: string, context?: string): Promise<ModelResponse>
参数:
question
: (必需) 要问的问题context
: (可选) 问题的上下文信息
返回值:
- 与generateText方法相同
createConversation方法
createConversation(options?: ConversationOptions): Conversation
参数:
options.systemPrompt
: (可选) 系统提示词,用于设置AI的行为options.maxHistory
: (可选) 最大历史消息数量,默认为20
返回值:
- Conversation实例
setModel方法
setModel(modelName: string): void
参数:
modelName
: (必需) 新的模型名称
Conversation类
sendMessage方法
sendMessage(message: string, options?: GenerateOptions): Promise<ModelResponse>
参数:
message
: (必需) 要发送的消息options
: (可选) 与generateText方法相同的选项
返回值:
- 与generateText方法相同
sendMessageStream方法
sendMessageStream(message: string, options?: GenerateOptions): AsyncGenerator<string>
参数:
message
: (必需) 要发送的消息options
: (可选) 与generateText方法相同的选项
返回值:
- 异步生成器,产生AI响应的文本片段
getHistory方法
getHistory(): Message[]
返回值:
- 对话历史消息数组
clear方法
clear(): void
- 清空对话历史,但保留系统提示词
setContext方法
setContext(context: string): void
参数:
context
: (必需) 新的对话上下文
高级用例
使用工厂函数创建助手
const { createAIAssistant } = require('ai-assistant-sdk');
const assistant = createAIAssistant({
apiKey: 'your-api-key-here',
model: 'gpt-3.5-turbo'
});
切换模型
// 创建时使用gpt-3.5-turbo
const assistant = new AIAssistant({
apiKey: 'your-api-key-here',
model: 'gpt-3.5-turbo'
});
// 切换到gpt-4(如果API密钥有访问权限)
assistant.setModel('gpt-4');
// 获取当前使用的模型
const currentModel = assistant.getOptions().model;
console.log('当前使用的模型:', currentModel);
带系统提示词的对话
const conversation = assistant.createConversation({
systemPrompt: '你是一个专业的程序员助手,只回答与编程相关的问题。'
});
// 后续的对话中,AI会遵循这个系统提示词
const response = await conversation.sendMessage('什么是JavaScript闭包?');
错误处理
try {
const result = await assistant.generateText('写一个很长的故事');
console.log(result.text);
} catch (error) {
if (error.type === 'RATE_LIMIT_ERROR') {
console.error('速率限制错误,请稍后再试');
} else if (error.type === 'AUTH_ERROR') {
console.error('认证错误,请检查API密钥');
} else {
console.error('发生错误:', error.message);
}
}
配置环境变量
在实际项目中,建议将API密钥存储在环境变量中:
// .env文件
OPENAI_API_KEY=your-api-key-here
// 在代码中读取
const apiKey = process.env.OPENAI_API_KEY;
const assistant = new AIAssistant({
apiKey,
model: 'gpt-3.5-turbo'
});
兼容性
- Node.js 14.x及以上版本
- 浏览器环境(需要额外的构建配置)
注意事项
- 请妥善保管您的API密钥,不要将其硬编码在公开的代码中
- 不同的AI模型可能有不同的功能和限制,请参考相应的文档
- 使用流式输出时,请注意处理网络中断等异常情况
示例
更多使用示例,请查看examples目录。