发现好文

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,就有做这方面的探索。

image-20231029171151338

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 算法。了解了大模型背后的原理,也有利于自己能如何更好的使用大模型本身,很值得看看。

image-20231029150528597

2. 纪录片:TypeScript 的诞生

https://www.bilibili.com/video/BV1rV411w7D8

随着 JavaScript 的执行效率越来越快,能做的事情也越来越多。很多大型应用开始用 JavaScript 来编写和构建,由于语言是弱类型的原因,让 degbug 变的困难。由此,TypeScript 团队开始组建…