发现好文
1. 基于大模型 + 知识库的 Code Review 实践
https://mp.weixin.qq.com/s/zUmt0W8nsu6_PHmLzSB2Og
基于 Meta 的开源大模型 Llama2 和飞书文档知识库相结合,来用 AI 辅助团队进行 Code Review。实践中包括对LLMs 大模型、Text Embeddings、向量数据库相关服务的选型。
更多实践:
2. ChatGPT 应用开发和思考
https://guangzhengli.com/blog/zh/gpt-embeddings/
作者在 AI 应用开发中的一些经验总结,包括 Prompt 的学习路线、最佳实践和使用技巧等。更多的 Prompt 调试指南还可以看以下内容:
ChatGPT 可以作为一个智能助手,输出自然语言和人类进行交互。但是想要和更多的应用程序进行集成,那还需要能够将信息提取为结构化的数据,比如 JSON 等。微软开源的一个库 TypeChat,就有做这方面的探索。
import fs from "fs";
import path from "path";
import dotenv from "dotenv";
import { createLanguageModel, createJsonTranslator, processRequests } from "typechat";
import { SentimentResponse } from "./sentimentSchema";
const model = createLanguageModel(process.env);
const schema = fs.readFileSync(path.join(__dirname, "sentimentSchema.ts"), "utf8");
const translator = createJsonTranslator<SentimentResponse>(model, schema, "SentimentResponse");
processRequests("😀> ", process.argv[2], async (question) => {
const response = await translator.translate(question);
if (!response.success) {
console.log(response.message);
return;
}
console.log(`The sentiment is ${response.data.sentiment}`);
});
那么,TypeChat 如何做到的呢?
翻阅了一下背后的源代码,其实就将“问题”和该问题需要的“数据 Type 类型”,也就是上面代码中的 sentimentSchema
, 一同发送给到了 GPT,核心的 Prompt 如下:
function createRequestPrompt(request: string) {
return `You are a service that translates user requests into JSON objects of type "${validator.typeName}" according to the following TypeScript definitions:\n` +
`\`\`\`\n${validator.schema}\`\`\`\n` +
`The following is a user request:\n` +
`"""\n${request}\n"""\n` +
`The following is the user request translated into a JSON object with 2 spaces of indentation and no properties with the value undefined:\n`;
}
AI 返回的数据有可能是不符合预期的,TypeChat 实现了一个 validator 来校验 AI 回复的数据。如果校验不通过,则继续发送 Repair Prompt 尝试来修复 JSON 数据。
async function translate(request: string) {
...
while (true) {
const response = await model.complete(prompt);
const responseText = response.data;
const startIndex = responseText.indexOf("{");
const endIndex = responseText.lastIndexOf("}");
if (!(startIndex >= 0 && endIndex > startIndex)) {
return error(`Response is not JSON:\n${responseText}`);
}
const jsonText = responseText.slice(startIndex, endIndex + 1);
const schemaValidation = validator.validate(jsonText);
const validation = schemaValidation.success ? typeChat.validateInstance(schemaValidation.data) : schemaValidation;
if (validation.success) {
return validation;
}
if (!attemptRepair) {
return error(`JSON validation failed: ${validation.message}\n${jsonText}`);
}
prompt += `${responseText}\n${typeChat.createRepairPrompt(validation.message)}`;
attemptRepair = false;
}
}
效率工具
WARP-Clash-API
https://github.com/vvbbnn00/WARP-Clash-API
支持将 Warp 转为 OpenClash 的订阅链接。在家里的群晖 Docker 上进行了部署,体验下来,访问速度不太快,可以作为一个备用选择。
随便看看
1. ChatGPT 原理揭密!背后的黑科技 Transformer
https://www.bilibili.com/video/BV1ZG411y7aZ
视频用了大量动画和通俗的例子来科普 ChatGPT 背后的 Transformer 算法。了解了大模型背后的原理,也有利于自己能如何更好的使用大模型本身,很值得看看。
2. 纪录片:TypeScript 的诞生
https://www.bilibili.com/video/BV1rV411w7D8
随着 JavaScript 的执行效率越来越快,能做的事情也越来越多。很多大型应用开始用 JavaScript 来编写和构建,由于语言是弱类型的原因,让 degbug 变的困难。由此,TypeScript 团队开始组建…