项目介绍:Salute
Salute 是一个简单而声明式的 JavaScript 库,旨在简化和优化对大语言模型(LLM)的控制。如果 Microsoft Guidance 和 React 结合在一起,那么它们的“孩子”可能就是 Salute。这个库提供了类似 React 的组件化和声明性方法,以低门槛的方式帮助开发者更有效地控制和利用 LLM。
项目特色
- 类似 React 的组装能力和声明式方法:Salute 借鉴了 React 的设计思路,使得代码结构清晰,易于理解和维护。
- 简洁的抽象:只使用极少量的抽象层和框架开销,代码库规模小巧。
- 透明的提示机制:不含隐秘的提示,开发者看到的即是模型实际处理的内容。
- 低级别控制:能够与模型处理文本的方式相匹配,提供精细控制。
- 快速学习曲线:熟悉的 JavaScript 特色,使得新用户能够快速上手。
- 支持类型检查、代码检测、语法高亮和自动补全。
安装
Salute 可以通过多种包管理器安装:
npm install salutejs
yarn add salutejs
pnpm add salutejs
安装后,需要设置 process.env.OPENAI_KEY
为你的 OpenAI API 密钥。
快速入门
Salute 提供了一些关键的概念和功能,方便用户快速上手。在开发过程中,用户会经常使用以下功能:
- 简单的聊天完成
- 创建和嵌套组件
- 为聊天序列使用
Array.map
- 生成 JSON 示例
示例:简单的聊天完成
在 Salute 中,agent 是一个按顺序执行的序列。通过定义不同的消息角色 (system
、user
和 assistant
) 和使用 gen
函数,可以与 LLM 进行交互和获取回答。以下是一个简单的聊天完成示例:
import { gpt3, gen, assistant, system, user } from "salutejs";
const agent = gpt3(({ params }) => [
system`You are a helpful and terse assistant.`,
user`
I want a response to the following question:
${params.query}
Please answer the question as if experts had collaborated in writing an anonymous answer.
`,
assistant`${gen("answer")}`
]);
const result = await agent(
{ query: `How can I be more productive?` },
{ render: true }
);
console.log(result);
/*
{
answer: "You can be more productive by...",
}
*/
高级示例
Salute 还提供了一些更高级的功能,例如通过控制提示上下文生成多个完成结果、让两个 agent 互相对话,以及支持 TypeScript 优化开发体验。
例如,让两个 agent 互相对话的实现,通过设置 queue
和利用 loop
重复执行对话流程,可以模拟不同角色之间的交流。
配置
Salute 主要设计用于与 OpenAI 模型一起使用,但支持使用您自己的模型,未来也计划支持更多模型。
OpenAI 自定义配置
通过配置 OpenAI 模型,可以指定不同的模型和参数来生成各种文本完成任务。例如创建 GPT-4 聊天完成:
const gpt4 = createOpenAIChatCompletion({
model: "gpt-4",
temperature: 0.9,
}, {
apiKey: "",
// 其他 OpenAI 配置
});
Salute 以简洁、灵活和高效的方式为开发者提供了与大语言模型交互的工具,大大降低了集成 LLM 的技术门槛。无论是基础的聊天功能还是复杂的应用场景,它都能提供高效的解决方案。