Giter VIP home page Giter VIP logo

law-cn-ai's Introduction

AI 法律助手

法律文件来源:https://github.com/LawRefBook/Laws

项目模板:https://github.com/supabase-community/nextjs-openai-doc-search

这个项目从 pages 目录中获取所有的 .mdx 文件,并将其处理成自定义上下文,以在OpenAI 文本自动补全提示中使用。

更多好玩

MagickPen

智能写作助手

TeachAnything

AI 百科全书

TeachAnything

Prompt 生成器

OpenL

AI 翻译专家

❤️ 打赏赞助 ❤️

部署

部署此 starter 到 Vercel。Supabase 集成将自动设置所需的环境变量并配置您的数据库概要。您只需要设置 OPENAI_KEY,然后就可以开始了!

Deploy with Vercel

楼主太懒了,感谢 GoJun 帮忙写了教程:https://eibot3u32o.feishu.cn/docx/L46Pdp3fjouPUvxaNzPckKctno3

技术细节

构建您自己的自定义 ChatGPT 涉及四个步骤:

  1. [👷 构建时间] 预处理知识库(您的 pages 文件夹中的 .mdx 文件)。
  2. [👷 构建时间] 在 PostgreSQL 中使用 pgvector 存储嵌入向量。
  3. [🏃 运行时] 执行向量相似性搜索,查找与问题相关的内容。
  4. [🏃 运行时] 将内容注入到 OpenAI GPT-3 文本自动补全中,并将响应流式传输到客户端。

👷 构建时间

步骤 1 和 2 发生在构建时间,例如当 Vercel 构建您的 Next.js 应用程序时。此时执行 generate-embeddings 脚本,该脚本执行以下任务:

sequenceDiagram
    participant Vercel
    participant DB (pgvector)
    participant OpenAI (API)
    loop 1. 预处理知识库
        Vercel->>Vercel: 将 .mdx 页面划分为部分
        loop 2. 创建并存储嵌入
            Vercel->>OpenAI (API): 为页面部分创建嵌入
            OpenAI (API)->>Vercel: 嵌入向量(1536)
            Vercel->>DB (pgvector): 存储页面部分的嵌入
        end
    end

除了存储嵌入向量之外,此脚本还为每个 .mdx 文件生成一个校验和,并将其存储在另一个数据库表中,以确保仅当文件更改时才重新生成嵌入向量。

🏃 运行时

步骤 3 和 4 在运行时发生,即用户提交问题时。发生这种情况时,执行以下一系列任务:

sequenceDiagram
    participant Client
    participant Edge Function
    participant DB (pgvector)
    participant OpenAI (API)
    Client->>Edge Function: { query: lorem ispum }
    critical 3. 执行向量相似性搜索
        Edge Function->>OpenAI (API): 为查询创建嵌入
        OpenAI (API)->>Edge Function: 嵌入向量(1536)
        Edge Function->>DB (pgvector): 向量相似性搜索
        DB (pgvector)->>Edge Function: 相关文档内容
    end
    critical 4. 将内容注入到提示中
        Edge Function->>OpenAI (API): 完成请求提示:查询+相关文档内容
        OpenAI (API)-->>Client: text/event-stream:自动补全响应
    end

此为 SearchDialog(客户端)组件和vector-search(边缘函数)负责的相关文件。

数据库的初始化,包括 pgvector 扩展的设置存储在 supabase/migrations文件夹中,并在运行 supabase start 时自动应用于本地 PostgreSQL 实例。

本地开发

配置

  • cp .env.example .env
  • 在新创建的 .env 文件中设置 OPENAI_KEY

启动 Supabase

确保已安装并在本地运行 Docker。然后运行

npx supabase start

启动 Next.js 应用程序

在新的终端窗口中运行

pnpm dev

部署

仅需将此 starter 部署到 Vercel。Supabase 集成将自动设置所需的环境变量并配置您的数据库 Schema。您只需设置 OPENAI_KEY 并开始使用即可!

Deploy with Vercel

了解更多

Video: How I Built Supabase's OpenAI Doc Search

此文件由 ChatGPT 提供翻译

Star History

Star History Chart

law-cn-ai's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

law-cn-ai's Issues

经常报错/api/vector-search status=500

1690648104
有一次提问成功之后,再提问就提示“[POST] /api/vector-search status=500”,如图。包括你的应用也是,这个问题一直存在,是不是openai的频率限制?

自行部署指南

感谢作者的付出!经过一些尝试,目前个人成功在 Vercel 自建了此服务,因此想分享一些可能对其他人有帮助的信息。

  1. 直接点击 README 的 Deploy 部署的是模板仓库而并非本仓库。我个人是 fork 了仓库后在 vercel 导入 repo 的。此外 Supabase 的实例可以点击 Deploy 后根据操作提示创建模板仓库,此时应该也会创建 Supabase 实例。把环境变量(NEXT_PUBLIC_SUPABASE_URLSUPABASE_SERVICE_ROLE_KEY)记录并移到自己的 repo 即可。 目前 Deploy 按钮功能已经正确,可以直接点击部署
  2. 若配置正确,初次部署会对全部法律条文计算 embedding,因此时间较久并且会产生较大的资费。我个人这边是用了 100 分钟左右,开销大概为 3 USD。此外 Vercel 的构建有 45 分钟限制,因此需要手动重新部署两次左右。
  3. 部署过程中会出现 one/multiple of its page sections failed to store properly,即一些资料计算 embedding 失败。虽然失败了一些也能用,但是这些内容就无法被检索了。目前我找到的方法就是反复 redeploy 进行重试,不过最终还是有 11 个文件计算失败。

再次感谢作者的分享~

有些条文无法回答

image
如果使用chatgpt问这个条文,会给出错误的回答。所以通过法律数据库是否会准确一些,结果是无法回答。这个是问法不对还是什么原因?

build过程中出现大量的error,反复多次依然出错。

[18:05:08.253] Failed to generate embeddings for '/docs/刑法/刑法修正案(九)' page section starting with '# 中华人民共和国刑法修正案(九) 2015年8月29日 第十二届全国人民代表...'
[18:05:08.254] Page '/docs/刑法/刑法修正案(九)' or one/multiple of its page sections failed to store properly. Page has been marked with null checksum to indicate that it needs to be re-generated.
[18:05:08.265] Error: Request failed with status code 400
[18:05:08.265] at createError (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/core/createError.js:16:15)
[18:05:08.266] at settle (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/core/settle.js:17:12)
[18:05:08.266] at IncomingMessage.handleStreamEnd (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/adapters/http.js:322:11)
[18:05:08.266] at IncomingMessage.emit (node:events:525:35)
[18:05:08.266] at IncomingMessage.emit (node:domain:489:12)
[18:05:08.266] at endReadableNT (node:internal/streams/readable:1359:12)
[18:05:08.266] at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
[18:05:08.266] config: {
[18:05:08.266] transitional: {
[18:05:08.266] silentJSONParsing: true,
[18:05:08.267] forcedJSONParsing: true,
[18:05:08.267] clarifyTimeoutError: false
[18:05:08.267] },
[18:05:08.267] adapter: [Function: httpAdapter],
[18:05:08.267] transformRequest: [ [Function: transformRequest] ],
[18:05:08.267] transformResponse: [ [Function: transformResponse] ],
[18:05:08.267] timeout: 0,
[18:05:08.267] xsrfCookieName: 'XSRF-TOKEN',
[18:05:08.267] xsrfHeaderName: 'X-XSRF-TOKEN',
[18:05:08.267] maxContentLength: -1,
[18:05:08.268] maxBodyLength: -1,
[18:05:08.268] validateStatus: [Function: validateStatus],
[18:05:08.268] headers: {
[18:05:08.268] Accept: 'application/json, text/plain, /',
[18:05:08.268] 'Content-Type': 'application/json',
[18:05:08.268] 'User-Agent': 'OpenAI/NodeJS/3.2.1',
[18:05:08.270] Authorization: 'Bearer sk-',
[18:05:08.270] 'Content-Length': 26428
[18:05:08.271] },
[18:05:08.271] method: 'post',
[18:05:08.272] data: '{"model":"text-embedding-ada-002","input":"# 中华人民共和国刑法修正案(九) 2015年8月29日 第十二届全国人民代表大会常务委员会第十六次会议通过 一、在刑法第三十七条后增加一条,作为第三十七条之一:“因利用职业便利实施犯罪,或者实施违背职业要求的特定义务的犯罪被判处刑罚的,人民法院可以根据犯罪情况和预防再犯罪的需要,禁止其自刑罚执行完毕之日或者假释之日起从事相关职业,期限为三年至五年。 “被禁止从事相关职业的人违反人民法院依照前款规定作出的决定的,由公安机关依法给予处罚;情节严重的,依照本法第三百一十三条的规定定罪处罚。 “其他法律、行政法规对其从事相关职业另有禁止或者限制性规定的,从其规定。” 二、将刑法第五十条第一款修改为:“判处死刑缓期执行的,在死刑缓期执行期间,如果没有故意犯罪,二年期满以后,减为无期徒刑;如果确有重大立功表现,二年期满以后,减为二十五年有期徒刑;如果故意犯罪,情节恶劣的,报请最高人民法院核准后执行死刑;对于故意犯罪未执行死刑的,死刑缓期执行的期间重新计算,并报最高人民法院备案。” 三、将刑法第五十三条修改为:“罚金在判决指定的期限内一次或者分期缴纳。期满不缴纳的,强制缴纳。对于不能全部缴纳罚金的,人民法院在任何时候发现被执行人有可以执行的财产,应当随时追缴。 “由于遭遇不能抗拒的灾祸等原因缴纳确实有困难的,经人民法院裁定,可以延期缴纳、酌情减少或者免除。” 四、在刑法第六十九条中增加一款作为第二款:“数罪中有判处有期徒刑和拘役的,执行有期徒刑。数罪中有判处有期徒刑和管制,或者拘役和管制的,有期徒刑、拘役执行完毕后,管制仍须执行。” 原第二款作为第三款。 五、将刑法第一百二十条修改为:“组织、领导恐怖活动组织的,处十年以上有期徒刑或者无期徒刑,并处没收财产;积极参加的,处三年以上十年以下有期徒刑,并处罚金;其他参加的,处三年以下有期徒刑、拘役、管制或者剥夺政治权利,可以并处罚金。 “犯前款罪并实施杀人、爆炸、绑架等犯罪的,依照数罪并罚的规定处罚。” 六、将刑法第一百二十条之一修改为:“资助恐怖活动组织、实施恐怖活动的个人的,或者资助恐怖活动培训的,处五年以下有期徒刑、拘役、管制或者剥夺政治权利,并处罚金;情节严重的,处五年以上有期徒刑,并处罚金或者没收财产。 “为恐怖活动组织、实施恐怖活动或者恐怖活动培训招募、运送人员的,依照前款的规定处罚。 “单位犯前两款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。” 七、在刑法第一百二十条之一后增加五条,作为第一百二十条之二、第一百二十条之三、第一百二十条之四、第一百二十条之五、第一百二十条之六: “第一百二十条之二 有下列情形之一的,处五年以下有期徒刑、拘役、管制或者剥夺政治权利,并处罚金;情节严重的,处五年以上有期徒刑,并处罚金或者没收财产: “(一)为实施恐怖活动准备凶器、危险物品或者其他工具的; “(二)组织恐怖活动培训或者积极参加恐怖活动培训的; “(三)为实施恐怖活动与境外恐怖活动组织或者人员联络的; “(四)为实施恐怖活动进行策划或者其他准备的。 “有前款行为,同时构成其他犯罪的,依照处罚较重的规定定罪处罚。 “第一百二十条之三 以制作、散发宣扬恐怖主义、极端主义的图书、音频视频资料或者其他物品,或者通过
[18:05:08.273] url: 'https://api.openai.com/v1/embeddings'
[18:05:08.273] },
[18:05:08.273] request: <ref 1> ClientRequest {
[18:05:08.273] _events: [Object: null prototype] {
[18:05:08.273] abort: [Function (anonymous)],
[18:05:08.273] aborted: [Function (anonymous)],
[18:05:08.273] connect: [Function (anonymous)],
[18:05:08.273] error: [Function (anonymous)],
[18:05:08.273] socket: [Function (anonymous)],
[18:05:08.274] timeout: [Function (anonymous)],
[18:05:08.274] finish: [Function: requestOnFinish]
[18:05:08.274] },
[18:05:08.274] _eventsCount: 7,
[18:05:08.274] _maxListeners: undefined,
[18:05:08.274] outputData: [],
[18:05:08.274] outputSize: 0,
[18:05:08.274] writable: true,
[18:05:08.274] destroyed: false,
[18:05:08.274] _last: true,
[18:05:08.274] chunkedEncoding: false,
[18:05:08.275] shouldKeepAlive: false,
[18:05:08.275] maxRequestsOnConnectionReached: false,
[18:05:08.275] _defaultKeepAlive: true,
[18:05:08.275] useChunkedEncodingByDefault: true,
[18:05:08.275] sendDate: false,
[18:05:08.275] _removedConnection: false,
[18:05:08.275] _removedContLen: false,
[18:05:08.275] _removedTE: false,
[18:05:08.275] strictContentLength: false,
[18:05:08.275] _contentLength: 26428,
[18:05:08.276] _hasBody: true,
[18:05:08.276] _trailer: '',
[18:05:08.276] finished: true,
[18:05:08.276] _headerSent: true,
[18:05:08.276] _closed: false,
[18:05:08.276] socket: TLSSocket {
[18:05:08.276] _tlsOptions: [Object],
[18:05:08.276] _secureEstablished: true,
[18:05:08.276] _securePending: false,
[18:05:08.276] _newSessionPending: false,
[18:05:08.276] _controlReleased: true,
[18:05:08.277] secureConnecting: false,
[18:05:08.277] _SNICallback: null,
[18:05:08.277] servername: 'api.openai.com',
[18:05:08.277] alpnProtocol: false,
[18:05:08.277] authorized: true,
[18:05:08.277] authorizationError: null,
[18:05:08.277] encrypted: true,
[18:05:08.277] _events: [Object: null prototype],
[18:05:08.277] _eventsCount: 10,
[18:05:08.277] connecting: false,
[18:05:08.277] _hadError: false,
[18:05:08.277] _parent: null,
[18:05:08.277] _host: 'api.openai.com',
[18:05:08.277] _closeAfterHandlingError: false,
[18:05:08.278] _readableState: [ReadableState],
[18:05:08.278] _maxListeners: undefined,
[18:05:08.278] _writableState: [WritableState],
[18:05:08.278] allowHalfOpen: false,
[18:05:08.278] _sockname: null,
[18:05:08.278] _pendingData: null,
[18:05:08.278] _pendingEncoding: '',
[18:05:08.278] server: undefined,
[18:05:08.278] _server: null,
[18:05:08.278] ssl: [TLSWrap],
[18:05:08.278] _requestCert: true,
[18:05:08.278] _rejectUnauthorized: true,
[18:05:08.279] parser: null,
[18:05:08.279] _httpMessage: [Circular 1],
[18:05:08.279] [Symbol(res)]: [TLSWrap],
[18:05:08.279] [Symbol(verified)]: true,
[18:05:08.279] [Symbol(pendingSession)]: null,
[18:05:08.279] [Symbol(async_id_symbol)]: 19387,
[18:05:08.279] [Symbol(kHandle)]: [TLSWrap],
[18:05:08.279] [Symbol(lastWriteQueueSize)]: 0,
[18:05:08.279] [Symbol(timeout)]: null,
[18:05:08.279] [Symbol(kBuffer)]: null,
[18:05:08.279] [Symbol(kBufferCb)]: null,
[18:05:08.280] [Symbol(kBufferGen)]: null,
[18:05:08.280] [Symbol(kCapture)]: false,
[18:05:08.280] [Symbol(kSetNoDelay)]: false,
[18:05:08.280] [Symbol(kSetKeepAlive)]: true,
[18:05:08.280] [Symbol(kSetKeepAliveInitialDelay)]: 60,
[18:05:08.280] [Symbol(kBytesRead)]: 0,
[18:05:08.280] [Symbol(kBytesWritten)]: 0,
[18:05:08.280] [Symbol(connect-options)]: [Object]
[18:05:08.280] },
[18:05:08.280] _header: 'POST /v1/embeddings HTTP/1.1\r\n' +
[18:05:08.281] 'Accept: application/json, text/plain, /\r\n' +
[18:05:08.281] 'Content-Type: application/json\r\n' +
[18:05:08.281] 'User-Agent: OpenAI/NodeJS/3.2.1\r\n' +
[18:05:08.281] 'Authorization: Bearer sk-\r\n’ +
[18:05:08.281] 'Content-Length: 26428\r\n' +
[18:05:08.281] 'Host: api.openai.com\r\n' +
[18:05:08.281] 'Connection: close\r\n' +
[18:05:08.281] '\r\n',
[18:05:08.281] _keepAliveTimeout: 0,
[18:05:08.282] _onPendingData: [Function: nop],
[18:05:08.282] agent: Agent {
[18:05:08.282] _events: [Object: null prototype],
[18:05:08.282] _eventsCount: 2,
[18:05:08.282] _maxListeners: undefined,
[18:05:08.282] defaultPort: 443,
[18:05:08.282] protocol: 'https:',
[18:05:08.282] options: [Object: null prototype],
[18:05:08.282] requests: [Object: null prototype] {},
[18:05:08.282] sockets: [Object: null prototype],
[18:05:08.282] freeSockets: [Object: null prototype] {},
[18:05:08.282] keepAliveMsecs: 1000,
[18:05:08.283] keepAlive: false,
[18:05:08.283] maxSockets: Infinity,
[18:05:08.284] maxFreeSockets: 256,
[18:05:08.284] scheduling: 'lifo',
[18:05:08.284] maxTotalSockets: Infinity,
[18:05:08.284] totalSocketCount: 1,
[18:05:08.285] maxCachedSessions: 100,
[18:05:08.285] _sessionCache: [Object],
[18:05:08.286] [Symbol(kCapture)]: false
[18:05:08.286] },
[18:05:08.286] socketPath: undefined,
[18:05:08.286] method: 'POST',
[18:05:08.286] maxHeaderSize: undefined,
[18:05:08.286] insecureHTTPParser: undefined,
[18:05:08.286] joinDuplicateHeaders: undefined,
[18:05:08.286] path: '/v1/embeddings',
[18:05:08.286] _ended: true,
[18:05:08.286] res: IncomingMessage {
[18:05:08.286] _readableState: [ReadableState],
[18:05:08.287] _events: [Object: null prototype],
[18:05:08.287] _eventsCount: 4,
[18:05:08.287] _maxListeners: undefined,
[18:05:08.287] socket: [TLSSocket],
[18:05:08.287] httpVersionMajor: 1,
[18:05:08.287] httpVersionMinor: 1,
[18:05:08.287] httpVersion: '1.1',
[18:05:08.287] complete: true,
[18:05:08.287] rawHeaders: [Array],
[18:05:08.287] rawTrailers: [],
[18:05:08.287] joinDuplicateHeaders: undefined,
[18:05:08.288] aborted: false,
[18:05:08.288] upgrade: false,
[18:05:08.288] url: '',
[18:05:08.288] method: null,
[18:05:08.288] statusCode: 400,
[18:05:08.288] statusMessage: 'Bad Request',
[18:05:08.288] client: [TLSSocket],
[18:05:08.289] _consuming: false,
[18:05:08.289] _dumped: false,
[18:05:08.289] req: [Circular 1],
[18:05:08.289] responseUrl: 'https://api.openai.com/v1/embeddings',
[18:05:08.289] redirects: [],
[18:05:08.289] [Symbol(kCapture)]: false,
[18:05:08.289] [Symbol(kHeaders)]: [Object],
[18:05:08.289] [Symbol(kHeadersCount)]: 34,
[18:05:08.289] [Symbol(kTrailers)]: null,
[18:05:08.290] [Symbol(kTrailersCount)]: 0
[18:05:08.290] },
[18:05:08.290] aborted: false,
[18:05:08.290] timeoutCb: null,
[18:05:08.290] upgradeOrConnect: false,
[18:05:08.290] parser: null,
[18:05:08.290] maxHeadersCount: null,
[18:05:08.290] reusedSocket: false,
[18:05:08.290] host: 'api.openai.com',
[18:05:08.290] protocol: 'https:',
[18:05:08.290] _redirectable: Writable {
[18:05:08.291] _writableState: [WritableState],
[18:05:08.291] _events: [Object: null prototype],
[18:05:08.291] _eventsCount: 3,
[18:05:08.291] _maxListeners: undefined,
[18:05:08.291] _options: [Object],
[18:05:08.291] _ended: true,
[18:05:08.291] _ending: true,
[18:05:08.291] _redirectCount: 0,
[18:05:08.292] _redirects: [],
[18:05:08.292] _requestBodyLength: 26428,
[18:05:08.292] _requestBodyBuffers: [],
[18:05:08.292] _onNativeResponse: [Function (anonymous)],
[18:05:08.292] _currentRequest: [Circular 1],
[18:05:08.292] _currentUrl: 'https://api.openai.com/v1/embeddings',
[18:05:08.292] [Symbol(kCapture)]: false
[18:05:08.292] },
[18:05:08.292] [Symbol(kCapture)]: false,
[18:05:08.292] [Symbol(kBytesWritten)]: 0,
[18:05:08.293] [Symbol(kEndCalled)]: true,
[18:05:08.293] [Symbol(kNeedDrain)]: false,
[18:05:08.293] [Symbol(corked)]: 0,
[18:05:08.293] [Symbol(kOutHeaders)]: [Object: null prototype] {
[18:05:08.293] accept: [Array],
[18:05:08.293] 'content-type': [Array],
[18:05:08.293] 'user-agent': [Array],
[18:05:08.293] authorization: [Array],
[18:05:08.293] 'content-length': [Array],
[18:05:08.293] host: [Array]
[18:05:08.294] },
[18:05:08.294] [Symbol(errored)]: null,
[18:05:08.294] [Symbol(kUniqueHeaders)]: null
[18:05:08.294] },
[18:05:08.294] response: {
[18:05:08.294] status: 400,
[18:05:08.294] statusText: 'Bad Request',
[18:05:08.294] headers: {
[18:05:08.294] date: 'Tue, 16 May 2023 10:05:08 GMT',
[18:05:08.294] 'content-type': 'application/json',
[18:05:08.295] 'content-length': '294',
[18:05:08.295] connection: 'close',
[18:05:08.295] 'access-control-allow-origin': '',
[18:05:08.295] 'openai-organization': ',
[18:05:08.295] 'openai-processing-ms': '119',
[18:05:08.295] 'openai-version': '2020-10-01',
[18:05:08.295] 'strict-transport-security': 'max-age=15724800; includeSubDomains',
[18:05:08.295] 'x-ratelimit-limit-requests': '3000',
[18:05:08.295] 'x-ratelimit-remaining-requests': '2999',
[18:05:08.295] 'x-ratelimit-reset-requests': '20ms',
[18:05:08.295] 'x-request-id': '09c0c903d5498c4813a4b4a969f2a5f7',
[18:05:08.296] 'cf-cache-status': 'DYNAMIC',
[18:05:08.296] server: 'cloudflare',
[18:05:08.296] 'cf-ray': '7c82cced5918396d-IAD',
[18:05:08.296] 'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400'
[18:05:08.296] },
[18:05:08.296] config: {
[18:05:08.296] transitional: [Object],
[18:05:08.296] adapter: [Function: httpAdapter],
[18:05:08.296] transformRequest: [Array],
[18:05:08.296] transformResponse: [Array],
[18:05:08.296] timeout: 0,
[18:05:08.296] xsrfCookieName: 'XSRF-TOKEN',
[18:05:08.297] xsrfHeaderName: 'X-XSRF-TOKEN',
[18:05:08.297] maxContentLength: -1,
[18:05:08.297] maxBodyLength: -1,
[18:05:08.297] validateStatus: [Function: validateStatus],
[18:05:08.297] headers: [Object],
[18:05:08.297] method: 'post',
[18:05:08.297] data: '{"model":"text-embedding-ada-002","input":"# 中华人民共和国刑法修正案(九) 2015年8月29日 第十二届全国人民代表大会常务委员会第十六次会议通过 一、在刑法第三十七条后增加一条,作为第三十七条之一:“因利用职业便利实施犯罪,或者实施违背职业要求的特定义务的犯罪被判处刑罚的,人民法院可以根据犯罪情况和预防再犯罪的需要,禁止其自刑罚执行完毕之日或者假释之日起从事相关职业,期限为三年至五年。 “被禁止从事相关职业的人违反人民法院依照前款规定作出的决定的,由公安机关依法给予处罚;情节严重的,依照本法第三百一十三条的规定定罪处罚。 “其他法律、行政法规对其从事相关职业另有禁止或者限制性规定的,从其规定。” 二、将刑法第五十条第一款修改为:“判处死刑缓期执行的,在死刑缓期执行期间,如果没有故意犯罪,二年期满以后,减为无期徒刑;如果确有重大立功表现,二年期满以后,减为二十五年有期徒刑;如果故意犯罪,情节恶劣的,报请最高人民法院核准后执行死刑;对于故意犯罪未执行死刑的,死刑缓期执行的期间重新计算,并报最高人民法院备案。” 三、将刑法第五十三条修改为:“罚金在判决指定的期限内一次或者分期缴纳。期满不缴纳的,强制缴纳。对于不能全部缴纳罚金的,人民法院在任何时候发现被执行人有可以执行的财产,应当随时追缴。 “由于遭遇不能抗拒的灾祸等原因缴纳确实有困难的,经人民法院裁定,可以延期缴纳、酌情减少或者免除。” 四、在刑法第六十九条中增加一款作为第二款:“数罪中有判处有期徒刑和拘役的,执行有期徒刑。数罪中有判处有期徒刑和管制,或者拘役和管制的,有期徒刑、拘役执行完毕后,管制仍须执行。” 原第二款作为第三款。 五、将刑法第一百二十条修改为:“组织、领导恐怖活动组织的,处十年以上有期徒刑或者无期徒刑,并处没收财产;积极参加的,处三年以上十年以下有期徒刑,并处罚金;其他参加的,处三年以下有期徒刑、拘役、管制或者剥夺政治权利,可以并处罚金。 “犯前款罪并实施杀人、爆炸、绑架等犯罪的,依照数罪并罚的规定处罚。” 六、将刑法第一百二十条之一修改为:“资助恐怖活动组织、实施恐怖活动的个人的,或者资助恐怖活动培训的,处五年以下有期徒刑、拘役、管制或者剥夺政治权利,并处罚金;情节严重的,处五年以上有期徒刑,并处罚金或者没收财产。 “为恐怖活动组织、实施恐怖活动或者恐怖活动培训招募、运送人员的,依照前款的规定处罚。 “单位犯前两款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。” 七、在刑法第一百二十条之一后增加五条,作为第一百二十条之二、第一百二十条之三、第一百二十条之四、第一百二十条之五、第一百二十条之六: “第一百二十条之二 有下列情形之一的,处五年以下有期徒刑、拘役、管制或者剥夺政治权利,并处罚金;情节严重的,处五年以上有期徒刑,并处罚金或者没收财产: “(一)为实施恐怖活动准备凶器、危险物品或者其他工具的; “(二)组织恐怖活动培训或者积极参加恐怖活动培训的; “(三)为实施恐怖活动与境外恐怖活动组织或者人员联络的; “(四)为实施恐怖活动进行策划或者其他准备的。 “有前款行为,同时构成其他犯罪的,依照处罚较重的规定定罪处罚。 “第一百二十条之三 以制作、散发宣扬恐怖主义、极端主义的图书、音频视频资料或者其他物品,或者通
[18:05:08.299] url: 'https://api.openai.com/v1/embeddings'
[18:05:08.299] },
[18:05:08.299] request: <ref 1> ClientRequest {
[18:05:08.299] _events: [Object: null prototype],
[18:05:08.299] _eventsCount: 7,
[18:05:08.299] _maxListeners: undefined,
[18:05:08.299] outputData: [],
[18:05:08.299] outputSize: 0,
[18:05:08.299] writable: true,
[18:05:08.299] destroyed: false,
[18:05:08.300] _last: true,
[18:05:08.300] chunkedEncoding: false,
[18:05:08.300] shouldKeepAlive: false,
[18:05:08.300] maxRequestsOnConnectionReached: false,
[18:05:08.300] _defaultKeepAlive: true,
[18:05:08.300] useChunkedEncodingByDefault: true,
[18:05:08.300] sendDate: false,
[18:05:08.300] _removedConnection: false,
[18:05:08.300] _removedContLen: false,
[18:05:08.300] _removedTE: false,
[18:05:08.301] strictContentLength: false,
[18:05:08.301] _contentLength: 26428,
[18:05:08.301] _hasBody: true,
[18:05:08.301] _trailer: '',
[18:05:08.301] finished: true,
[18:05:08.301] _headerSent: true,
[18:05:08.301] _closed: false,
[18:05:08.301] socket: [TLSSocket],
[18:05:08.301] _header: 'POST /v1/embeddings HTTP/1.1\r\n' +
[18:05:08.301] 'Accept: application/json, text/plain, /\r\n' +
[18:05:08.301] 'Content-Type: application/json\r\n' +
[18:05:08.302] 'User-Agent: OpenAI/NodeJS/3.2.1\r\n' +
[18:05:08.302] 'Authorization: Bearer sk-\r\n’ +
[18:05:08.302] 'Content-Length: 26428\r\n' +
[18:05:08.302] 'Host: api.openai.com\r\n' +
[18:05:08.302] 'Connection: close\r\n' +
[18:05:08.302] '\r\n',
[18:05:08.302] _keepAliveTimeout: 0,
[18:05:08.302] _onPendingData: [Function: nop],
[18:05:08.302] agent: [Agent],
[18:05:08.302] socketPath: undefined,
[18:05:08.303] method: 'POST',
[18:05:08.303] maxHeaderSize: undefined,
[18:05:08.303] insecureHTTPParser: undefined,
[18:05:08.303] joinDuplicateHeaders: undefined,
[18:05:08.303] path: '/v1/embeddings',
[18:05:08.303] _ended: true,
[18:05:08.303] res: [IncomingMessage],
[18:05:08.303] aborted: false,
[18:05:08.303] timeoutCb: null,
[18:05:08.303] upgradeOrConnect: false,
[18:05:08.303] parser: null,
[18:05:08.304] maxHeadersCount: null,
[18:05:08.304] reusedSocket: false,
[18:05:08.304] host: 'api.openai.com',
[18:05:08.304] protocol: 'https:',
[18:05:08.304] _redirectable: [Writable],
[18:05:08.304] [Symbol(kCapture)]: false,
[18:05:08.304] [Symbol(kBytesWritten)]: 0,
[18:05:08.304] [Symbol(kEndCalled)]: true,
[18:05:08.304] [Symbol(kNeedDrain)]: false,
[18:05:08.304] [Symbol(corked)]: 0,
[18:05:08.304] [Symbol(kOutHeaders)]: [Object: null prototype],
[18:05:08.305] [Symbol(errored)]: null,
[18:05:08.305] [Symbol(kUniqueHeaders)]: null
[18:05:08.305] },
[18:05:08.305] data: { error: [Object] }
[18:05:08.305] },
[18:05:08.305] isAxiosError: true,
[18:05:08.305] toJSON: [Function: toJSON]
[18:05:08.305] }
[18:05:08.608] [/docs/刑法/刑法修正案(二)] Adding 1 page sections (with embeddings)
[18:05:09.402] [/docs/刑法/刑法修正案(五)] Adding 1 page sections (with embeddings)
[18:05:10.235] [/docs/刑法/刑法修正案(八)] Adding 1 page sections (with embeddings)
[18:05:10.407] Failed to generate embeddings for '/docs/刑法/刑法修正案(八)' page section starting with '# 中华人民共和国刑法修正案(八) 2011年2月25日 第十一届全国人民代表...'
[18:05:10.407] Page '/docs/刑法/刑法修正案(八)' or one/multiple of its page sections failed to store properly. Page has been marked with null checksum to indicate that it needs to be re-generated.
[18:05:10.413] Error: Request failed with status code 400
[18:05:10.413] at createError (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/core/createError.js:16:15)
[18:05:10.413] at settle (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/core/settle.js:17:12)
[18:05:10.413] at IncomingMessage.handleStreamEnd (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/adapters/http.js:322:11)
[18:05:10.413] at IncomingMessage.emit (node:events:525:35)
[18:05:10.413] at IncomingMessage.emit (node:domain:489:12)
[18:05:10.414] at endReadableNT (node:internal/streams/readable:1359:12)
[18:05:10.414] at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
[18:05:10.414] config: {
[18:05:10.414] transitional: {
[18:05:10.414] silentJSONParsing: true,
[18:05:10.414] forcedJSONParsing: true,
[18:05:10.414] clarifyTimeoutError: false
[18:05:10.414] },
[18:05:10.414] adapter: [Function: httpAdapter],
[18:05:10.414] transformRequest: [ [Function: transformRequest] ],
[18:05:10.415] transformResponse: [ [Function: transformResponse] ],
[18:05:10.415] timeout: 0,
[18:05:10.415] xsrfCookieName: 'XSRF-TOKEN',
[18:05:10.415] xsrfHeaderName: 'X-XSRF-TOKEN',
[18:05:10.415] maxContentLength: -1,
[18:05:10.415] maxBodyLength: -1,
[18:05:10.416] validateStatus: [Function: validateStatus],
[18:05:10.416] headers: {
[18:05:10.417] Accept: 'application/json, text/plain, /',
[18:05:10.417] 'Content-Type': 'application/json',
[18:05:10.417] 'User-Agent': 'OpenAI/NodeJS/3.2.1',
[18:05:10.417] Authorization: 'Bearer sk-’,
[18:05:10.419] 'Content-Length': 22218
[18:05:10.419] },
[18:05:10.420] method: 'post',
[18:05:10.420] data: '{"model":"text-embedding-ada-002","input":"# 中华人民共和国刑法修正案(八) 2011年2月25日 第十一届全国人民代表大会常务委员会第十九次会议通过 一、在刑法第十七条后增加一条,作为第十七条之一:“已满七十五周岁的人故意犯罪的,可以从轻或者减轻处罚;过失犯罪的,应当从轻或者减轻处罚。” 二、在刑法第三十八条中增加一款作为第二款:“判处管制,可以根据犯罪情况,同时禁止犯罪分子在执行期间从事特定活动,进入特定区域、场所,接触特定的人。” 原第二款作为第三款,修改为:“对判处管制的犯罪分子,依法实行社区矫正。” 增加一款作为第四款:“违反第二款规定的禁止令的,由公安机关依照《中华人民共和国治安管理处罚法》的规定处罚。” 三、在刑法第四十九条中增加一款作为第二款:“审判的时候已满七十五周岁的人,不适用死刑,但以特别残忍手段致人死亡的除外。” 四、将刑法第五十条修改为:“判处死刑缓期执行的,在死刑缓期执行期间,如果没有故意犯罪,二年期满以后,减为无期徒刑;如果确有重大立功表现,二年期满以后,减为二十五年有期徒刑;如果故意犯罪,查证属实的,由最高人民法院核准,执行死刑。 “对被判处死刑缓期执行的累犯以及因故意杀人、强奸、抢劫、绑架、放火、爆炸、投放危险物质或者有组织的暴力性犯罪被判处死刑缓期执行的犯罪分子,人民法院根据犯罪情节等情况可以同时决定对其限制减刑。” 五、将刑法第六十三条第一款修改为:“犯罪分子具有本法规定的减轻处罚情节的,应当在法定刑以下判处刑罚;本法规定有数个量刑幅度的,应当在法定量刑幅度的下一个量刑幅度内判处刑罚。” 六、将刑法第六十五条第一款修改为:“被判处有期徒刑以上刑罚的犯罪分子,刑罚执行完毕或者赦免以后,在五年以内再犯应当判处有期徒刑以上刑罚之罪的,是累犯,应当从重处罚,但是过失犯罪和不满十八周岁的人犯罪的除外。” 七、将刑法第六十六条修改为:“危害国家安全犯罪、恐怖活动犯罪、黑社会性质的组织犯罪的犯罪分子,在刑罚执行完毕或者赦免以后,在任何时候再犯上述任一类罪的,都以累犯论处。” 八、在刑法第六十七条中增加一款作为第三款:“犯罪嫌疑人虽不具有前两款规定的自首情节,但是如实供述自己罪行的,可以从轻处罚;因其如实供述自己罪行,避免特别严重后果发生的,可以减轻处罚。” 九、删去刑法第六十八条第二款。 十、将刑法第六十九条修改为:“判决宣告以前一人犯数罪的,除判处死刑和无期徒刑的以外,应当在总和刑期以下、数刑中最高刑期以上,酌情决定执行的刑期,但是管制最高不能超过三年,拘役最高不能超过一年,有期徒刑总和刑期不满三十五年的,最高不能超过二十年,总和刑期在三十五年以上的,最高不能超过二十五年。 “数罪中有判处附加刑的,附加刑仍须执行,其中附加刑种类相同的,合并执行,种类不同的,分别执行。” 十一、将刑法第七十二条修改为:“对于被判处拘役、三年以下有期徒刑的犯罪分子,同时符合下列条件的,可以宣告缓刑,对其中不满十八周岁的人、怀孕的妇女和已满七十五周岁的人,应当宣告缓刑: “(一)犯罪情节较轻; “(二)有悔罪表现; “(三)没有再犯罪的危险; “(四)宣告缓刑对所居住社区没有重大不良影响。 “宣告缓刑,可以根据犯罪情况,同时禁止犯罪分子在缓刑考验期限内从事特定活动,进入特定区域、场所,接触特定的人。 “被宣告缓刑的犯罪分子,如果
[18:05:10.421] url: 'https://api.openai.com/v1/embeddings'
[18:05:10.421] },
[18:05:10.421] request: <ref 1> ClientRequest {
[18:05:10.422] _events: [Object: null prototype] {
[18:05:10.422] abort: [Function (anonymous)],
[18:05:10.422] aborted: [Function (anonymous)],
[18:05:10.422] connect: [Function (anonymous)],
[18:05:10.422] error: [Function (anonymous)],
[18:05:10.422] socket: [Function (anonymous)],
[18:05:10.422] timeout: [Function (anonymous)],
[18:05:10.422] finish: [Function: requestOnFinish]
[18:05:10.422] },
[18:05:10.422] _eventsCount: 7,
[18:05:10.423] _maxListeners: undefined,
[18:05:10.423] outputData: [],
[18:05:10.423] outputSize: 0,
[18:05:10.423] writable: true,
[18:05:10.423] destroyed: false,
[18:05:10.423] _last: true,
[18:05:10.423] chunkedEncoding: false,
[18:05:10.423] shouldKeepAlive: false,
[18:05:10.423] maxRequestsOnConnectionReached: false,
[18:05:10.423] _defaultKeepAlive: true,
[18:05:10.423] useChunkedEncodingByDefault: true,
[18:05:10.424] sendDate: false,
[18:05:10.424] _removedConnection: false,
[18:05:10.424] _removedContLen: false,
[18:05:10.424] _removedTE: false,
[18:05:10.424] strictContentLength: false,
[18:05:10.424] _contentLength: 22218,
[18:05:10.424] _hasBody: true,
[18:05:10.424] _trailer: '',
[18:05:10.424] finished: true,
[18:05:10.424] _headerSent: true,
[18:05:10.424] _closed: false,
[18:05:10.425] socket: TLSSocket {
[18:05:10.425] _tlsOptions: [Object],
[18:05:10.425] _secureEstablished: true,
[18:05:10.425] _securePending: false,
[18:05:10.425] _newSessionPending: false,
[18:05:10.425] _controlReleased: true,
[18:05:10.425] secureConnecting: false,
[18:05:10.425] _SNICallback: null,
[18:05:10.425] servername: 'api.openai.com',
[18:05:10.425] alpnProtocol: false,
[18:05:10.425] authorized: true,
[18:05:10.426] authorizationError: null,
[18:05:10.426] encrypted: true,
[18:05:10.426] _events: [Object: null prototype],
[18:05:10.426] _eventsCount: 10,
[18:05:10.426] connecting: false,
[18:05:10.426] _hadError: false,
[18:05:10.426] _parent: null,
[18:05:10.426] _host: 'api.openai.com',
[18:05:10.426] _closeAfterHandlingError: false,
[18:05:10.426] _readableState: [ReadableState],
[18:05:10.427] _maxListeners: undefined,
[18:05:10.427] _writableState: [WritableState],
[18:05:10.427] allowHalfOpen: false,
[18:05:10.427] _sockname: null,
[18:05:10.427] _pendingData: null,
[18:05:10.427] _pendingEncoding: '',
[18:05:10.427] server: undefined,
[18:05:10.427] _server: null,
[18:05:10.427] ssl: [TLSWrap],
[18:05:10.427] _requestCert: true,
[18:05:10.427] _rejectUnauthorized: true,
[18:05:10.427] parser: null,
[18:05:10.428] _httpMessage: [Circular 1],
[18:05:10.428] [Symbol(res)]: [TLSWrap],
[18:05:10.428] [Symbol(verified)]: true,
[18:05:10.428] [Symbol(pendingSession)]: null,
[18:05:10.428] [Symbol(async_id_symbol)]: 19769,
[18:05:10.428] [Symbol(kHandle)]: [TLSWrap],
[18:05:10.428] [Symbol(lastWriteQueueSize)]: 0,
[18:05:10.428] [Symbol(timeout)]: null,
[18:05:10.428] [Symbol(kBuffer)]: null,
[18:05:10.428] [Symbol(kBufferCb)]: null,
[18:05:10.429] [Symbol(kBufferGen)]: null,
[18:05:10.429] [Symbol(kCapture)]: false,
[18:05:10.429] [Symbol(kSetNoDelay)]: false,
[18:05:10.429] [Symbol(kSetKeepAlive)]: true,
[18:05:10.429] [Symbol(kSetKeepAliveInitialDelay)]: 60,
[18:05:10.429] [Symbol(kBytesRead)]: 0,
[18:05:10.429] [Symbol(kBytesWritten)]: 0,
[18:05:10.429] [Symbol(connect-options)]: [Object]
[18:05:10.429] },
[18:05:10.429] _header: 'POST /v1/embeddings HTTP/1.1\r\n' +
[18:05:10.429] 'Accept: application/json, text/plain, /\r\n' +
[18:05:10.429] 'Content-Type: application/json\r\n' +
[18:05:10.430] 'User-Agent: OpenAI/NodeJS/3.2.1\r\n' +
[18:05:10.430] 'Authorization: Bearer sk-\r\n’ +
[18:05:10.430] 'Content-Length: 22218\r\n' +
[18:05:10.430] 'Host: api.openai.com\r\n' +
[18:05:10.430] 'Connection: close\r\n' +
[18:05:10.430] '\r\n',
[18:05:10.430] _keepAliveTimeout: 0,
[18:05:10.430] _onPendingData: [Function: nop],
[18:05:10.430] agent: Agent {
[18:05:10.430] _events: [Object: null prototype],
[18:05:10.430] _eventsCount: 2,
[18:05:10.431] _maxListeners: undefined,
[18:05:10.431] defaultPort: 443,
[18:05:10.431] protocol: 'https:',
[18:05:10.431] options: [Object: null prototype],
[18:05:10.431] requests: [Object: null prototype] {},
[18:05:10.431] sockets: [Object: null prototype],
[18:05:10.431] freeSockets: [Object: null prototype] {},
[18:05:10.431] keepAliveMsecs: 1000,
[18:05:10.431] keepAlive: false,
[18:05:10.431] maxSockets: Infinity,
[18:05:10.431] maxFreeSockets: 256,
[18:05:10.431] scheduling: 'lifo',
[18:05:10.432] maxTotalSockets: Infinity,
[18:05:10.432] totalSocketCount: 1,
[18:05:10.432] maxCachedSessions: 100,
[18:05:10.432] _sessionCache: [Object],
[18:05:10.432] [Symbol(kCapture)]: false
[18:05:10.432] },
[18:05:10.433] socketPath: undefined,
[18:05:10.433] method: 'POST',
[18:05:10.433] maxHeaderSize: undefined,
[18:05:10.433] insecureHTTPParser: undefined,
[18:05:10.433] joinDuplicateHeaders: undefined,
[18:05:10.433] path: '/v1/embeddings',
[18:05:10.433] _ended: true,
[18:05:10.433] res: IncomingMessage {
[18:05:10.434] _readableState: [ReadableState],
[18:05:10.434] _events: [Object: null prototype],
[18:05:10.434] _eventsCount: 4,
[18:05:10.434] _maxListeners: undefined,
[18:05:10.434] socket: [TLSSocket],
[18:05:10.434] httpVersionMajor: 1,
[18:05:10.434] httpVersionMinor: 1,
[18:05:10.434] httpVersion: '1.1',
[18:05:10.434] complete: true,
[18:05:10.434] rawHeaders: [Array],
[18:05:10.434] rawTrailers: [],
[18:05:10.434] joinDuplicateHeaders: undefined,
[18:05:10.435] aborted: false,
[18:05:10.435] upgrade: false,
[18:05:10.435] url: '',
[18:05:10.435] method: null,
[18:05:10.435] statusCode: 400,
[18:05:10.435] statusMessage: 'Bad Request',
[18:05:10.435] client: [TLSSocket],
[18:05:10.435] _consuming: false,
[18:05:10.435] _dumped: false,
[18:05:10.435] req: [Circular 1],
[18:05:10.435] responseUrl: 'https://api.openai.com/v1/embeddings',
[18:05:10.435] redirects: [],
[18:05:10.436] [Symbol(kCapture)]: false,
[18:05:10.436] [Symbol(kHeaders)]: [Object],
[18:05:10.436] [Symbol(kHeadersCount)]: 34,
[18:05:10.436] [Symbol(kTrailers)]: null,
[18:05:10.436] [Symbol(kTrailersCount)]: 0
[18:05:10.436] },
[18:05:10.436] aborted: false,
[18:05:10.436] timeoutCb: null,
[18:05:10.436] upgradeOrConnect: false,
[18:05:10.436] parser: null,
[18:05:10.436] maxHeadersCount: null,
[18:05:10.436] reusedSocket: false,
[18:05:10.436] host: 'api.openai.com',
[18:05:10.437] protocol: 'https:',
[18:05:10.437] _redirectable: Writable {
[18:05:10.437] _writableState: [WritableState],
[18:05:10.437] _events: [Object: null prototype],
[18:05:10.437] _eventsCount: 3,
[18:05:10.437] _maxListeners: undefined,
[18:05:10.437] _options: [Object],
[18:05:10.437] _ended: true,
[18:05:10.437] _ending: true,
[18:05:10.437] _redirectCount: 0,
[18:05:10.437] _redirects: [],
[18:05:10.437] _requestBodyLength: 22218,
[18:05:10.437] _requestBodyBuffers: [],
[18:05:10.438] _onNativeResponse: [Function (anonymous)],
[18:05:10.438] _currentRequest: [Circular 1],
[18:05:10.438] _currentUrl: 'https://api.openai.com/v1/embeddings',
[18:05:10.438] [Symbol(kCapture)]: false
[18:05:10.438] },
[18:05:10.438] [Symbol(kCapture)]: false,
[18:05:10.438] [Symbol(kBytesWritten)]: 0,
[18:05:10.438] [Symbol(kEndCalled)]: true,
[18:05:10.438] [Symbol(kNeedDrain)]: false,
[18:05:10.438] [Symbol(corked)]: 0,
[18:05:10.438] [Symbol(kOutHeaders)]: [Object: null prototype] {
[18:05:10.438] accept: [Array],
[18:05:10.439] 'content-type': [Array],
[18:05:10.439] 'user-agent': [Array],
[18:05:10.439] authorization: [Array],
[18:05:10.439] 'content-length': [Array],
[18:05:10.439] host: [Array]
[18:05:10.439] },
[18:05:10.439] [Symbol(errored)]: null,
[18:05:10.439] [Symbol(kUniqueHeaders)]: null
[18:05:10.439] },
[18:05:10.439] response: {
[18:05:10.439] status: 400,
[18:05:10.440] statusText: 'Bad Request',
[18:05:10.440] headers: {
[18:05:10.440] date: 'Tue, 16 May 2023 10:05:10 GMT',
[18:05:10.440] 'content-type': 'application/json',
[18:05:10.440] 'content-length': '292',
[18:05:10.440] connection: 'close',
[18:05:10.440] 'access-control-allow-origin': '',
[18:05:10.440] 'openai-organization': ',
[18:05:10.440] 'openai-processing-ms': '99',
[18:05:10.440] 'openai-version': '2020-10-01',
[18:05:10.440] 'strict-transport-security': 'max-age=15724800; includeSubDomains',
[18:05:10.441] 'x-ratelimit-limit-requests': '3000',
[18:05:10.441] 'x-ratelimit-remaining-requests': '2999',
[18:05:10.441] 'x-ratelimit-reset-requests': '20ms',
[18:05:10.441] 'x-request-id': '2b67c46a656a27ab295d274e8c296228',
[18:05:10.441] 'cf-cache-status': 'DYNAMIC',
[18:05:10.441] server: 'cloudflare',
[18:05:10.441] 'cf-ray': '7c82ccfb0b9f05d7-IAD',
[18:05:10.441] 'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400'
[18:05:10.441] },
[18:05:10.442] config: {
[18:05:10.443] transitional: [Object],
[18:05:10.443] adapter: [Function: httpAdapter],
[18:05:10.443] transformRequest: [Array],
[18:05:10.443] transformResponse: [Array],
[18:05:10.443] timeout: 0,
[18:05:10.443] xsrfCookieName: 'XSRF-TOKEN',
[18:05:10.443] xsrfHeaderName: 'X-XSRF-TOKEN',
[18:05:10.443] maxContentLength: -1,
[18:05:10.443] maxBodyLength: -1,
[18:05:10.443] validateStatus: [Function: validateStatus],
[18:05:10.444] headers: [Object],
[18:05:10.444] method: 'post',
[18:05:10.444] data: '{"model":"text-embedding-ada-002","input":"# 中华人民共和国刑法修正案(八) 2011年2月25日 第十一届全国人民代表大会常务委员会第十九次会议通过 一、在刑法第十七条后增加一条,作为第十七条之一:“已满七十五周岁的人故意犯罪的,可以从轻或者减轻处罚;过失犯罪的,应当从轻或者减轻处罚。” 二、在刑法第三十八条中增加一款作为第二款:“判处管制,可以根据犯罪情况,同时禁止犯罪分子在执行期间从事特定活动,进入特定区域、场所,接触特定的人。” 原第二款作为第三款,修改为:“对判处管制的犯罪分子,依法实行社区矫正。” 增加一款作为第四款:“违反第二款规定的禁止令的,由公安机关依照《中华人民共和国治安管理处罚法》的规定处罚。” 三、在刑法第四十九条中增加一款作为第二款:“审判的时候已满七十五周岁的人,不适用死刑,但以特别残忍手段致人死亡的除外。” 四、将刑法第五十条修改为:“判处死刑缓期执行的,在死刑缓期执行期间,如果没有故意犯罪,二年期满以后,减为无期徒刑;如果确有重大立功表现,二年期满以后,减为二十五年有期徒刑;如果故意犯罪,查证属实的,由最高人民法院核准,执行死刑。 “对被判处死刑缓期执行的累犯以及因故意杀人、强奸、抢劫、绑架、放火、爆炸、投放危险物质或者有组织的暴力性犯罪被判处死刑缓期执行的犯罪分子,人民法院根据犯罪情节等情况可以同时决定对其限制减刑。” 五、将刑法第六十三条第一款修改为:“犯罪分子具有本法规定的减轻处罚情节的,应当在法定刑以下判处刑罚;本法规定有数个量刑幅度的,应当在法定量刑幅度的下一个量刑幅度内判处刑罚。” 六、将刑法第六十五条第一款修改为:“被判处有期徒刑以上刑罚的犯罪分子,刑罚执行完毕或者赦免以后,在五年以内再犯应当判处有期徒刑以上刑罚之罪的,是累犯,应当从重处罚,但是过失犯罪和不满十八周岁的人犯罪的除外。” 七、将刑法第六十六条修改为:“危害国家安全犯罪、恐怖活动犯罪、黑社会性质的组织犯罪的犯罪分子,在刑罚执行完毕或者赦免以后,在任何时候再犯上述任一类罪的,都以累犯论处。” 八、在刑法第六十七条中增加一款作为第三款:“犯罪嫌疑人虽不具有前两款规定的自首情节,但是如实供述自己罪行的,可以从轻处罚;因其如实供述自己罪行,避免特别严重后果发生的,可以减轻处罚。” 九、删去刑法第六十八条第二款。 十、将刑法第六十九条修改为:“判决宣告以前一人犯数罪的,除判处死刑和无期徒刑的以外,应当在总和刑期以下、数刑中最高刑期以上,酌情决定执行的刑期,但是管制最高不能超过三年,拘役最高不能超过一年,有期徒刑总和刑期不满三十五年的,最高不能超过二十年,总和刑期在三十五年以上的,最高不能超过二十五年。 “数罪中有判处附加刑的,附加刑仍须执行,其中附加刑种类相同的,合并执行,种类不同的,分别执行。” 十一、将刑法第七十二条修改为:“对于被判处拘役、三年以下有期徒刑的犯罪分子,同时符合下列条件的,可以宣告缓刑,对其中不满十八周岁的人、怀孕的妇女和已满七十五周岁的人,应当宣告缓刑: “(一)犯罪情节较轻; “(二)有悔罪表现; “(三)没有再犯罪的危险; “(四)宣告缓刑对所居住社区没有重大不良影响。 “宣告缓刑,可以根据犯罪情况,同时禁止犯罪分子在缓刑考验期限内从事特定活动,进入特定区域、场所,接触特定的人。 “被宣告缓刑的犯罪分子,如
[18:05:10.444] url: 'https://api.openai.com/v1/embeddings'
[18:05:10.444] },
[18:05:10.444] request: <ref 1> ClientRequest {
[18:05:10.445] _events: [Object: null prototype],
[18:05:10.445] _eventsCount: 7,
[18:05:10.445] _maxListeners: undefined,
[18:05:10.445] outputData: [],
[18:05:10.445] outputSize: 0,
[18:05:10.445] writable: true,
[18:05:10.446] destroyed: false,
[18:05:10.446] _last: true,
[18:05:10.446] chunkedEncoding: false,
[18:05:10.446] shouldKeepAlive: false,
[18:05:10.446] maxRequestsOnConnectionReached: false,
[18:05:10.446] _defaultKeepAlive: true,
[18:05:10.446] useChunkedEncodingByDefault: true,
[18:05:10.446] sendDate: false,
[18:05:10.447] _removedConnection: false,
[18:05:10.447] _removedContLen: false,
[18:05:10.447] _removedTE: false,
[18:05:10.447] strictContentLength: false,
[18:05:10.447] _contentLength: 22218,
[18:05:10.447] _hasBody: true,
[18:05:10.447] _trailer: '',
[18:05:10.447] finished: true,
[18:05:10.447] _headerSent: true,
[18:05:10.447] _closed: false,
[18:05:10.447] socket: [TLSSocket],
[18:05:10.447] _header: 'POST /v1/embeddings HTTP/1.1\r\n' +
[18:05:10.448] 'Accept: application/json, text/plain, /\r\n' +
[18:05:10.448] 'Content-Type: application/json\r\n' +
[18:05:10.448] 'User-Agent: OpenAI/NodeJS/3.2.1\r\n' +
[18:05:10.448] 'Authorization: Bearer sk-\r\n’ +
[18:05:10.448] 'Content-Length: 22218\r\n' +
[18:05:10.448] 'Host: api.openai.com\r\n' +
[18:05:10.448] 'Connection: close\r\n' +
[18:05:10.448] '\r\n',
[18:05:10.448] _keepAliveTimeout: 0,
[18:05:10.448] _onPendingData: [Function: nop],
[18:05:10.449] agent: [Agent],
[18:05:10.449] socketPath: undefined,
[18:05:10.449] method: 'POST',
[18:05:10.449] maxHeaderSize: undefined,
[18:05:10.449] insecureHTTPParser: undefined,
[18:05:10.449] joinDuplicateHeaders: undefined,
[18:05:10.449] path: '/v1/embeddings',
[18:05:10.449] _ended: true,
[18:05:10.449] res: [IncomingMessage],
[18:05:10.449] aborted: false,
[18:05:10.449] timeoutCb: null,
[18:05:10.450] upgradeOrConnect: false,
[18:05:10.450] parser: null,
[18:05:10.450] maxHeadersCount: null,
[18:05:10.450] reusedSocket: false,
[18:05:10.450] host: 'api.openai.com',
[18:05:10.450] protocol: 'https:',
[18:05:10.450] _redirectable: [Writable],
[18:05:10.450] [Symbol(kCapture)]: false,
[18:05:10.450] [Symbol(kBytesWritten)]: 0,
[18:05:10.450] [Symbol(kEndCalled)]: true,
[18:05:10.450] [Symbol(kNeedDrain)]: false,
[18:05:10.451] [Symbol(corked)]: 0,
[18:05:10.451] [Symbol(kOutHeaders)]: [Object: null prototype],
[18:05:10.451] [Symbol(errored)]: null,
[18:05:10.451] [Symbol(kUniqueHeaders)]: null
[18:05:10.451] },
[18:05:10.451] data: { error: [Object] }
[18:05:10.451] },
[18:05:10.451] isAxiosError: true,
[18:05:10.451] toJSON: [Function: toJSON]
[18:05:10.451] }
[18:05:10.777] [/docs/刑法/刑法修正案(六)] Adding 1 page sections (with embeddings)
[18:05:11.751] [/docs/刑法/刑法修正案(十)] Adding 1 page sections (with embeddings)
[18:05:12.952] [/docs/刑法/刑法修正案(十一)] Adding 1 page sections (with embeddings)
[18:05:13.212] Failed to generate embeddings for '/docs/刑法/刑法修正案(十一)' page section starting with '# 中华人民共和国刑法修正案(十一) 2020年12月26日 第十三届全国人民...'
[18:05:13.212] Page '/docs/刑法/刑法修正案(十一)' or one/multiple of its page sections failed to store properly. Page has been marked with null checksum to indicate that it needs to be re-generated.
[18:05:13.216] Error: Request failed with status code 400
[18:05:13.216] at createError (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/core/createError.js:16:15)
[18:05:13.216] at settle (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/core/settle.js:17:12)
[18:05:13.216] at IncomingMessage.handleStreamEnd (/vercel/path0/node_modules/.pnpm/[email protected]/node_modules/axios/lib/adapters/http.js:322:11)
[18:05:13.217] at IncomingMessage.emit (node:events:525:35)
[18:05:13.217] at IncomingMessage.emit (node:domain:489:12)
[18:05:13.217] at endReadableNT (node:internal/streams/readable:1359:12)
[18:05:13.217] at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
[18:05:13.217] config: {
[18:05:13.217] transitional: {
[18:05:13.217] silentJSONParsing: true,
[18:05:13.217] forcedJSONParsing: true,
[18:05:13.217] clarifyTimeoutError: false
[18:05:13.218] },
[18:05:13.218] adapter: [Function: httpAdapter],
[18:05:13.218] transformRequest: [ [Function: transformRequest] ],
[18:05:13.219] transformResponse: [ [Function: transformResponse] ],
[18:05:13.219] timeout: 0,
[18:05:13.219] xsrfCookieName: 'XSRF-TOKEN',
[18:05:13.219] xsrfHeaderName: 'X-XSRF-TOKEN',
[18:05:13.219] maxContentLength: -1,
[18:05:13.219] maxBodyLength: -1,
[18:05:13.219] validateStatus: [Function: validateStatus],
[18:05:13.219] headers: {
[18:05:13.219] Accept: 'application/json, text/plain, /',
[18:05:13.219] 'Content-Type': 'application/json',
[18:05:13.219] 'User-Agent': 'OpenAI/NodeJS/3.2.1',
[18:05:13.220] Authorization: 'Bearer sk-',
[18:05:13.220] 'Content-Length': 28170
[18:05:13.220] },
[18:05:13.220] method: 'post',
[18:05:13.220] data: '{"model":"text-embedding-ada-002","input":"# 中华人民共和国刑法修正案(十一) 2020年12月26日 第十三届全国人民代表大会常务委员会第二十四次会议通过 一、将刑法第十七条修改为:“已满十六周岁的人犯罪,应当负刑事责任。 “已满十四周岁不满十六周岁的人,犯故意杀人、故意伤害致人重伤或者死亡、强奸、抢劫、贩卖毒品、放火、爆炸、投放危险物质罪的,应当负刑事责任。 “已满十二周岁不满十四周岁的人,犯故意杀人、故意伤害罪,致人死亡或者以特别残忍手段致人重伤造成严重残疾,情节恶劣,经最高人民检察院核准追诉的,应当负刑事责任。 “对依照前三款规定追究刑事责任的不满十八周岁的人,应当从轻或者减轻处罚。 “因不满十六周岁不予刑事处罚的,责令其父母或者其他监护人加以管教;在必要的时候,依法进行专门矫治教育。” 二、在刑法第一百三十三条之一后增加一条,作为第一百三十三条之二:“对行驶中的公共交通工具的驾驶人员使用暴力或者抢控驾驶操纵装置,干扰公共交通工具正常行驶,危及公共安全的,处一年以下有期徒刑、拘役或者管制,并处或者单处罚金。 “前款规定的驾驶人员在行驶的公共交通工具上擅离职守,与他人互殴或者殴打他人,危及公共安全的,依照前款的规定处罚。 “有前两款行为,同时构成其他犯罪的,依照处罚较重的规定定罪处罚。” 三、将刑法第一百三十四条第二款修改为:“强令他人违章冒险作业,或者明知存在重大事故隐患而不排除,仍冒险组织作业,因而发生重大伤亡事故或者造成其他严重后果的,处五年以下有期徒刑或者拘役;情节特别恶劣的,处五年以上有期徒刑。” 四、在刑法第一百三十四条后增加一条,作为第一百三十四条之一:“在生产、作业中违反有关安全管理的规定,有下列情形之一,具有发生重大伤亡事故或者其他严重后果的现实危险的,处一年以下有期徒刑、拘役或者管制: “(一)关闭、破坏直接关系生产安全的监控、报警、防护、救生设备、设施,或者篡改、隐瞒、销毁其相关数据、信息的; “(二)因存在重大事故隐患被依法责令停产停业、停止施工、停止使用有关设备、设施、场所或者立即采取排除危险的整改措施,而拒不执行的; “(三)涉及安全生产的事项未经依法批准或者许可,擅自从事矿山开采、金属冶炼、建筑施工,以及危险物品生产、经营、储存等高度危险的生产作业活动的。” 五、将刑法第一百四十一条修改为:“生产、销售假药的,处三年以下有期徒刑或者拘役,并处罚金;对人体健康造成严重危害或者有其他严重情节的,处三年以上十年以下有期徒刑,并处罚金;致人死亡或者有其他特别严重情节的,处十年以上有期徒刑、无期徒刑或者死刑,并处罚金或者没收财产。 “药品使用单位的人员明知是假药而提供给他人使用的,依照前款的规定处罚。” 六、将刑法第一百四十二条修改为:“生产、销售劣药,对人体健康造成严重危害的,处三年以上十年以下有期徒刑,并处罚金;后果特别严重的,处十年以上有期徒刑或者无期徒刑,并处罚金或者没收财产。 “药品使用单位的人员明知是劣药而提供给他人使用的,依照前款的规定处罚。” 七、在刑法第一百四十二条后增加一条,作为第一百四十二条之一:“违反药品管理法规,有下列情形之一,足以严重危害人体健康的,处三年以下有期徒刑或者拘役,并处或者单处罚金;对人体健康造成严重危害或者有其他严重情节的,处三年以上七年以下有期徒
[18:05:13.220] url: 'https://api.openai.com/v1/embeddings'
[18:05:13.220] },
[18:05:13.221] request: <ref *1> ClientRequest {
[18:05:13.221] _events: [Object: null prototype] {
[18:05:13.221] abort: [Function (anonymous)],
[18:05:13.221] aborted: [Function (anonymous)],
[18:05:13.221] connect: [Function (anonymous)],
[18:05:13.221] error: [Function (anonymous)],
[18:05:13.221] socket: [Function (anonymous)],
[18:05:13.221] timeout: [Function (anonymous)],
[18:05:13.221] finish: [Function: requestOnFinish]
[18:05:13.221] },
[18:05:13.221] _eventsCount: 7,
[18:05:13.221] _maxListeners: undefined,
[18:05:13.221] outputData: [],
[18:05:13.222] outputSize: 0,
[18:05:13.222] writable: true,
[18:05:13.222] destroyed: false,
[18:05:13.222] _last: true,
[18:05:13.222] chunkedEncoding: false,
[18:05:13.222] shouldKeepAlive: false,
[18:05:13.222] maxRequestsOnConnectionReached: false,
[18:05:13.222] _defaultKeepAlive: true,
[18:05:13.222] useChunkedEncodingByDefault: true,
[18:05:13.222] sendDate: false,
[18:05:13.222] _removedConnection: false,
[18:05:13.222] _removedContLen: false,
[18:05:13.223] _removedTE: false,
[18:05:13.223] strictContentLength: false,
[18:05:13.223] _contentLength: 28170,
[18:05:13.223] _hasBody: true,
[18:05:13.223] _trailer: '',
[18:05:13.223] finished: true,
[18:05:13.223] _headerSent: true,
[18:05:13.223] _closed: false,
[18:05:13.223] socket: TLSSocket {
[18:05:13.223] _tlsOptions: [Object],
[18:05:13.223] _secureEstablished: true,
[18:05:13.223] _securePending: false,
[18:05:13.223] _newSessionPending: false,
[18:05:13.224] _controlReleased: true,
[18:05:13.224] secureConnecting: false,
[18:05:13.224] _SNICallback: null,
[18:05:13.224] servername: 'api.openai.com',
[18:05:13.224] alpnProtocol: false,
[18:05:13.224] authorized: true,
[18:05:13.224] authorizationError: null,
[18:05:13.224] encrypted: true,
[18:05:13.224] _events: [Object: null prototype],
[18:05:13.224] _eventsCount: 10,
[18:05:13.224] connecting: false,
[18:05:13.225] _hadError: false,
[18:05:13.225] _parent: null,
[18:05:13.225] _host: 'api.openai.com',
[18:05:13.225] _closeAfterHandlingError: false,
[18:05:13.225] _readableState: [ReadableState],
[18:05:13.225] _maxListeners: undefined,
[18:05:13.225] _writableState: [WritableState],
[18:05:13.225] allowHalfOpen: false,
[18:05:13.225] _sockname: null,
[18:05:13.225] _pendingData: null,
[18:05:13.225] _pendingEncoding: '',
[18:05:13.225] server: undefined,
[18:05:13.225] _server: null,
[18:05:13.226] ssl: [TLSWrap],
[18:05:13.226] _requestCert: true,
[18:05:13.226] _rejectUnauthorized: true,
[18:05:13.226] parser: null,
[18:05:13.226] _httpMessage: [Circular *1],
[18:05:13.226] [Symbol(res)]: [TLSWrap],
[18:05:13.226] [Symbol(verified)]: true,
[18:05:13.226] [Symbol(pendingSession)]: null,
[18:05:13.226] [Symbol(async_id_symbol)]: 20149,
[18:05:13.226] [Symbol(kHandle)]: [TLSWrap],
[18:05:13.226] [Symbol(lastWriteQueueSize)]: 0,
[18:05:13.226] [Symbol(timeout)]: null,
[18:05:13.226] [Symbol(kBuffer)]: null,
[18:05:13.227] [Symbol(kBufferCb)]: null,
[18:05:13.227] [Symbol(kBufferGen)]: null,
[18:05:13.227] [Symbol(kCapture)]: false,
[18:05:13.227] [Symbol(kSetNoDelay)]: false,
[18:05:13.227] [Symbol(kSetKeepAlive)]: true,
[18:05:13.227] [Symbol(kSetKeepAliveInitialDelay)]: 60,
[18:05:13.227] [Symbol(kBytesRead)]: 0,
[18:05:13.227] [Symbol(kBytesWritten)]: 0,
[18:05:13.227] [Symbol(connect-options)]: [Object]
[18:05:13.227] },
[18:05:13.227] _header: 'POST /v1/embeddings HTTP/1.1\r\n' +
[18:05:13.227] 'Accept: application/json, text/plain, /\r\n' +
[18:05:13.228] 'Content-Type: application/json\r\n' +
[18:05:13.228] 'User-Agent: OpenAI/NodeJS/3.2.1\r\n' +
[18:05:13.228] 'Authorization: Bearer sk-\r\n' +
[18:05:13.228] 'Content-Length: 28170\r\n' +
[18:05:13.228] 'Host: api.openai.com\r\n' +
[18:05:13.228] 'Connection: close\r\n' +
[18:05:13.228] '\r\n',
[18:05:13.228] _keepAliveTimeout: 0,
[18:05:13.228] _onPendingData: [Function: nop],
[18:05:13.228] agent: Agent {
[18:05:13.228] _events: [Object: null prototype],
[18:05:13.228] _eventsCount: 2,
[18:05:13.229] _maxListeners: undefined,
[18:05:13.229] defaultPort: 443,
[18:05:13.229] protocol: 'https:',
[18:05:13.229] options: [Object: null prototype],
[18:05:13.229] requests: [Object: null prototype] {},
[18:05:13.229] sockets: [Object: null prototype],
[18:05:13.229] freeSockets: [Object: null prototype] {},
[18:05:13.230] keepAliveMsecs: 1000,
[18:05:13.230] keepAlive: false,
[18:05:13.230] maxSockets: Infinity,
[18:05:13.230] maxFreeSockets: 256,
[18:05:13.231] scheduling: 'lifo',
[18:05:13.231] maxTotalSockets: Infinity,
[18:05:13.231] totalSocketCount: 1,
[18:05:13.231] maxCachedSessions: 100,
[18:05:13.231] _sessionCache: [Object],
[18:05:13.231] [Symbol(kCapture)]: false
[18:05:13.231] },
[18:05:13.231] socketPath: undefined,
[18:05:13.231] method: 'POST',
[18:05:13.231] maxHeaderSize: undefined,
[18:05:13.231] insecureHTTPParser: undefined,
[18:05:13.231] joinDuplicateHeaders: undefined,
[18:05:13.231] path: '/v1/embeddings',
[18:05:13.232] _ended: true,
[18:05:13.232] res: IncomingMessage {
[18:05:13.232] _readableState: [ReadableState],
[18:05:13.232] _events: [Object: null prototype],
[18:05:13.232] _eventsCount: 4,
[18:05:13.232] _maxListeners: undefined,
[18:05:13.232] socket: [TLSSocket],
[18:05:13.232] httpVersionMajor: 1,
[18:05:13.232] httpVersionMinor: 1,
[18:05:13.232] httpVersion: '1.1',
[18:05:13.232] complete: true,
[18:05:13.232] rawHeaders: [Array],
[18:05:13.232] rawTrailers: [],
[18:05:13.233] joinDuplicateHeaders: undefined,
[18:05:13.233] aborted: false,
[18:05:13.233] upgrade: false,
[18:05:13.233] url: '',
[18:05:13.233] method: null,
[18:05:13.233] statusCode: 400,
[18:05:13.233] statusMessage: 'Bad Request',
[18:05:13.233] client: [TLSSocket],
[18:05:13.233] _consuming: false,
[18:05:13.233] _dumped: false,
[18:05:13.233] req: [Circular *1],
[18:05:13.233] responseUrl: 'https://api.openai.com/v1/embeddings',
[18:05:13.233] redirects: [],
[18:05:13.234] [Symbol(kCapture)]: false,
[18:05:13.234] [Symbol(kHeaders)]: [Object],
[18:05:13.234] [Symbol(kHeadersCount)]: 34,
[18:05:13.234] [Symbol(kTrailers)]: null,
[18:05:13.234] [Symbol(kTrailersCount)]: 0
[18:05:13.234] },
[18:05:13.234] aborted: false,
[18:05:13.234] timeoutCb: null,
[18:05:13.234] upgradeOrConnect: false,
[18:05:13.234] parser: null,
[18:05:13.234] maxHeadersCount: null,
[18:05:13.234] reusedSocket: false,
[18:05:13.234] host: 'api.openai.com',
[18:05:13.235] protocol: 'https:',
[18:05:13.235] _redirectable: Writable {
[18:05:13.235] _writableState: [WritableState],
[18:05:13.235] _events: [Object: null prototype],
[18:05:13.235] _eventsCount: 3,
[18:05:13.235] _maxListeners: undefined,
[18:05:13.235] _options: [Object],
[18:05:13.235] _ended: true,
[18:05:13.235] _ending: true,
[18:05:13.235] _redirectCount: 0,
[18:05:13.235] _redirects: [],
[18:05:13.235] _requestBodyLength: 28170,
[18:05:13.236] _requestBodyBuffers: [],
[18:05:13.236] _onNativeResponse: [Function (anonymous)],
[18:05:13.236] _currentRequest: [Circular 1],
[18:05:13.236] _currentUrl: 'https://api.openai.com/v1/embeddings',
[18:05:13.236] [Symbol(kCapture)]: false
[18:05:13.236] },
[18:05:13.236] [Symbol(kCapture)]: false,
[18:05:13.236] [Symbol(kBytesWritten)]: 0,
[18:05:13.236] [Symbol(kEndCalled)]: true,
[18:05:13.236] [Symbol(kNeedDrain)]: false,
[18:05:13.236] [Symbol(corked)]: 0,
[18:05:13.237] [Symbol(kOutHeaders)]: [Object: null prototype] {
[18:05:13.237] accept: [Array],
[18:05:13.237] 'content-type': [Array],
[18:05:13.237] 'user-agent': [Array],
[18:05:13.237] authorization: [Array],
[18:05:13.237] 'content-length': [Array],
[18:05:13.237] host: [Array]
[18:05:13.237] },
[18:05:13.237] [Symbol(errored)]: null,
[18:05:13.237] [Symbol(kUniqueHeaders)]: null
[18:05:13.237] },
[18:05:13.237] response: {
[18:05:13.237] status: 400,
[18:05:13.238] statusText: 'Bad Request',
[18:05:13.238] headers: {
[18:05:13.238] date: 'Tue, 16 May 2023 10:05:13 GMT',
[18:05:13.238] 'content-type': 'application/json',
[18:05:13.238] 'content-length': '294',
[18:05:13.238] connection: 'close',
[18:05:13.238] 'access-control-allow-origin': '',
[18:05:13.238] 'openai-organization': ',
[18:05:13.238] 'openai-processing-ms': '118',
[18:05:13.238] 'openai-version': '2020-10-01',
[18:05:13.238] 'strict-transport-security': 'max-age=15724800; includeSubDomains',
[18:05:13.238] 'x-ratelimit-limit-requests': '3000',
[18:05:13.239] 'x-ratelimit-remaining-requests': '2999',
[18:05:13.239] 'x-ratelimit-reset-requests': '20ms',
[18:05:13.239] 'x-request-id': '4bc3ce5b45372c072b8e8bc6e2667bab',
[18:05:13.239] 'cf-cache-status': 'DYNAMIC',
[18:05:13.239] server: 'cloudflare',
[18:05:13.239] 'cf-ray': '7c82cd0c0ecf394f-IAD',
[18:05:13.239] 'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400'
[18:05:13.239] },
[18:05:13.239] config: {
[18:05:13.239] transitional: [Object],
[18:05:13.240] adapter: [Function: httpAdapter],
[18:05:13.240] transformRequest: [Array],
[18:05:13.240] transformResponse: [Array],
[18:05:13.240] timeout: 0,
[18:05:13.240] xsrfCookieName: 'XSRF-TOKEN',
[18:05:13.240] xsrfHeaderName: 'X-XSRF-TOKEN',
[18:05:13.240] maxContentLength: -1,
[18:05:13.240] maxBodyLength: -1,
[18:05:13.240] validateStatus: [Function: validateStatus],
[18:05:13.240] headers: [Object],
[18:05:13.240] method: 'post',
[18:05:13.241] data: '{"model":"text-embedding-ada-002","input":"# 中华人民共和国刑法修正案(十一) 2020年12月26日 第十三届全国人民代表大会常务委员会第二十四次会议通过 一、将刑法第十七条修改为:“已满十六周岁的人犯罪,应当负刑事责任。 “已满十四周岁不满十六周岁的人,犯故意杀人、故意伤害致人重伤或者死亡、强奸、抢劫、贩卖毒品、放火、爆炸、投放危险物质罪的,应当负刑事责任。 “已满十二周岁不满十四周岁的人,犯故意杀人、故意伤害罪,致人死亡或者以特别残忍手段致人重伤造成严重残疾,情节恶劣,经最高人民检察院核准追诉的,应当负刑事责任。 “对依照前三款规定追究刑事责任的不满十八周岁的人,应当从轻或者减轻处罚。 “因不满十六周岁不予刑事处罚的,责令其父母或者其他监护人加以管教;在必要的时候,依法进行专门矫治教育。” 二、在刑法第一百三十三条之一后增加一条,作为第一百三十三条之二:“对行驶中的公共交通工具的驾驶人员使用暴力或者抢控驾驶操纵装置,干扰公共交通工具正常行驶,危及公共安全的,处一年以下有期徒刑、拘役或者管制,并处或者单处罚金。 “前款规定的驾驶人员在行驶的公共交通工具上擅离职守,与他人互殴或者殴打他人,危及公共安全的,依照前款的规定处罚。 “有前两款行为,同时构成其他犯罪的,依照处罚较重的规定定罪处罚。” 三、将刑法第一百三十四条第二款修改为:“强令他人违章冒险作业,或者明知存在重大事故隐患而不排除,仍冒险组织作业,因而发生重大伤亡事故或者造成其他严重后果的,处五年以下有期徒刑或者拘役;情节特别恶劣的,处五年以上有期徒刑。” 四、在刑法第一百三十四条后增加一条,作为第一百三十四条之一:“在生产、作业中违反有关安全管理的规定,有下列情形之一,具有发生重大伤亡事故或者其他严重后果的现实危险的,处一年以下有期徒刑、拘役或者管制: “(一)关闭、破坏直接关系生产安全的监控、报警、防护、救生设备、设施,或者篡改、隐瞒、销毁其相关数据、信息的; “(二)因存在重大事故隐患被依法责令停产停业、停止施工、停止使用有关设备、设施、场所或者立即采取排除危险的整改措施,而拒不执行的; “(三)涉及安全生产的事项未经依法批准或者许可,擅自从事矿山开采、金属冶炼、建筑施工,以及危险物品生产、经营、储存等高度危险的生产作业活动的。” 五、将刑法第一百四十一条修改为:“生产、销售假药的,处三年以下有期徒刑或者拘役,并处罚金;对人体健康造成严重危害或者有其他严重情节的,处三年以上十年以下有期徒刑,并处罚金;致人死亡或者有其他特别严重情节的,处十年以上有期徒刑、无期徒刑或者死刑,并处罚金或者没收财产。 “药品使用单位的人员明知是假药而提供给他人使用的,依照前款的规定处罚。” 六、将刑法第一百四十二条修改为:“生产、销售劣药,对人体健康造成严重危害的,处三年以上十年以下有期徒刑,并处罚金;后果特别严重的,处十年以上有期徒刑或者无期徒刑,并处罚金或者没收财产。 “药品使用单位的人员明知是劣药而提供给他人使用的,依照前款的规定处罚。” 七、在刑法第一百四十二条后增加一条,作为第一百四十二条之一:“违反药品管理法规,有下列情形之一,足以严重危害人体健康的,处三年以下有期徒刑或者拘役,并处或者单处罚金;对人体健康造成严重危害或者有其他严重情节的,处三年以上七年以下有期
[18:05:13.241] url: 'https://api.openai.com/v1/embeddings'
[18:05:13.241] },
[18:05:13.242] request: <ref *1> ClientRequest {
[18:05:13.242] _events: [Object: null prototype],
[18:05:13.242] _eventsCount: 7,
[18:05:13.242] _maxListeners: undefined,
[18:05:13.242] outputData: [],
[18:05:13.242] outputSize: 0,
[18:05:13.242] writable: true,
[18:05:13.242] destroyed: false,
[18:05:13.242] _last: true,
[18:05:13.242] chunkedEncoding: false,
[18:05:13.242] shouldKeepAlive: false,
[18:05:13.242] maxRequestsOnConnectionReached: false,
[18:05:13.242] _defaultKeepAlive: true,
[18:05:13.243] useChunkedEncodingByDefault: true,
[18:05:13.243] sendDate: false,
[18:05:13.243] _removedConnection: false,
[18:05:13.243] _removedContLen: false,
[18:05:13.243] _removedTE: false,
[18:05:13.243] strictContentLength: false,
[18:05:13.243] _contentLength: 28170,
[18:05:13.243] _hasBody: true,
[18:05:13.243] _trailer: '',
[18:05:13.243] finished: true,
[18:05:13.243] _headerSent: true,
[18:05:13.244] _closed: false,
[18:05:13.244] socket: [TLSSocket],
[18:05:13.244] _header: 'POST /v1/embeddings HTTP/1.1\r\n' +
[18:05:13.244] 'Accept: application/json, text/plain, /\r\n' +
[18:05:13.244] 'Content-Type: application/json\r\n' +
[18:05:13.244] 'User-Agent: OpenAI/NodeJS/3.2.1\r\n' +
[18:05:13.244] 'Authorization: Bearer sk-\r\n' +
[18:05:13.244] 'Content-Length: 28170\r\n' +
[18:05:13.244] 'Host: api.openai.com\r\n' +
[18:05:13.244] 'Connection: close\r\n' +
[18:05:13.244] '\r\n',
[18:05:13.244] _keepAliveTimeout: 0,
[18:05:13.244] _onPendingData: [Function: nop],
[18:05:13.245] agent: [Agent],
[18:05:13.245] socketPath: undefined,
[18:05:13.245] method: 'POST',
[18:05:13.245] maxHeaderSize: undefined,
[18:05:13.245] insecureHTTPParser: undefined,
[18:05:13.245] joinDuplicateHeaders: undefined,
[18:05:13.245] path: '/v1/embeddings',
[18:05:13.245] _ended: true,
[18:05:13.245] res: [IncomingMessage],
[18:05:13.245] aborted: false,
[18:05:13.245] timeoutCb: null,
[18:05:13.245] upgradeOrConnect: false,
[18:05:13.245] parser: null,
[18:05:13.245] maxHeadersCount: null,
[18:05:13.246] reusedSocket: false,
[18:05:13.246] host: 'api.openai.com',
[18:05:13.246] protocol: 'https:',
[18:05:13.246] _redirectable: [Writable],
[18:05:13.246] [Symbol(kCapture)]: false,
[18:05:13.246] [Symbol(kBytesWritten)]: 0,
[18:05:13.246] [Symbol(kEndCalled)]: true,
[18:05:13.246] [Symbol(kNeedDrain)]: false,
[18:05:13.246] [Symbol(corked)]: 0,
[18:05:13.246] [Symbol(kOutHeaders)]: [Object: null prototype],
[18:05:13.246] [Symbol(errored)]: null,
[18:05:13.246] [Symbol(kUniqueHeaders)]: null
[18:05:13.246] },
[18:05:13.247] data: { error: [Object] }
[18:05:13.247] },
[18:05:13.247] isAxiosError: true,
[18:05:13.247] toJSON: [Function: toJSON]
[18:05:13.247] }

修改/pages/docs/ 无效

fork以后,修改docs/目录下的文件,仍然会使用原docs目录下的文件嵌入法律相关数据集
使用 nextjs-openai-doc-search项目模板时,修改docs目录下文件正常,但是默认回复是英文的。。明明输入的是中文
ps:无法上下文结合,每次都是重新回答

部署问题请教

客户端报错:服务器繁忙,请稍后再试! 或者自行部署
服务端日志:
TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
at (pages/api/vector-search.ts:58:22)
at (node_modules/.pnpm/[email protected]_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/adapter.js:103:0)
我是自行部署,看了supbase写入了数据的
Snipaste_2023-05-08_13-37-49

作为法律机器人来说,存在一些问题

从技术研究和例子角度来说,实现挺好的,感谢作者的尝试和付出,是个不错的尝试。

但从法律机器人应用角度来说,我个人感觉目前的流程和prompt存在一些问题,可能会导致无法太实用,不知道是否能有好的方法解决。

大语言模型训练的过程中也有基于一些法律文本,因此也存在这方面的解答能力,所以即使在向量查询内容不太相符时,好像也会生成答案,但这时有些就是基于模型的自身能力甚至幻想了。例如,我看docs下并没有提供“婚姻法”的文件,而回答“离婚需要双方同意吗?”这个答案会提到婚姻法的内容。
之前也有其他人提到回答的法规对应条款不对的情况 这个

我自己尝试对prompt做了些调整,但发现还是有些问题。模型的幻想比较明显,例如下面这段

民间借贷受国家保护的合法利息是多少?

Answer:
根据《中华人民共和国利率法》第十二条规定,借款人和出借人可以协商约定利率,但是不得高于人民银行同期贷款基准利率的4倍。同时,根据《最高人民法院关于审理民间借贷案件适用法律若干问题的规定》第十二条规定,借款利率超过年利率24%的,属于无效利率。因此,民间借贷的合法利息应该在人民银行同期贷款基准利率的4倍以内,且不得超过年利率24%。

这种真真假假的,可能是大语言模型应用最头疼的地方吧。

關於 OPENAI_BASE_URL 參數

.env.example 裡的 OPENAI_BASE_URL 參數,似乎是沒有用處的? 程式中看來沒有使用到這個參數的地方。

pnpm i 安装报错

 ERR_PNPM_UNEXPECTED_PKG_CONTENT_IN_STORE  Package name mismatch found while reading {"integrity":"sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==","registry":"https://registry.npmjs.org/","tarball":"https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz"} from the store. This means that the lockfile is broken. Expected package: [email protected]. Actual package in the store by the given integrity: [email protected].

就拉下来跑了这个,其他还没改,不知道是什么问题

导入时报错比较多

反馈一下,build时导入数据报错还是比较多,有些估计是md文件格式问题没处理
第1类:Page '/docs/民法商法/保险法(2015-04-24)' or one/multiple of its page sections failed to store properly. Page has been marked with null checksum to indicate that it needs to be re-generated.
[5:1-5:61: Expected a closing tag for <中华人民共和国保险法> (5:40-5:52) before the end of paragraph] {
reason: 'Expected a closing tag for <中华人民共和国保险法> (5:40-5:52) before the end of paragraph',
line: 5,
column: 1,
position: {
start: { line: 5, column: 1, offset: 51, _index: 0, _bufferIndex: 0 },
end: { line: 5, column: 61, offset: 111, _index: 1, _bufferIndex: -1 }
},
source: 'mdast-util-mdx-jsx',
ruleId: 'end-tag-mismatch'
}

第2类:在OpenAI embedding调用API时报statusCode: 400、statusCode: 429错误

另外出现最多的,就是导入一段后开始大量报错
Page '/docs/刑法/刑法修正案(四)' or one/multiple of its page sections failed to store properly. Page has been marked with null checksum to indicate that it needs to be re-generated.
{
message: 'FetchError: fetch failed',
details: '',
hint: '',
code: ''
}
看起来是在连续出现第1类、第2类报错后出现的,然后就全部报这个错,还没弄清楚原因。

报错:Applying migration时提示Error: unexpected EOF

npx supabase start
Applying migration 20230406025118_init.sql...
Error: unexpected EOF
At statement 0: -- Enable pgvector extension
create extension if not exists vector with schema public
Try rerunning the command with --debug to troubleshoot the error.

如果是加了--debug,就会一直卡在

Setting up Edge Functions runtime...

环境:
debian版本:11
nodejs版本:v16.20.0
pnpm版本:8.4.0

pnpm list
Legend: production dependency, optional only, dev only

[email protected] /root/law-cn-ai (PRIVATE)

dependencies:
@radix-ui/react-dialog 1.0.3     clsx 1.2.1                       lucide-react 0.128.0             next 13.2.4                      typescript 5.0.2
@radix-ui/react-label 2.0.1      cmdk 0.2.0                       mdast 3.0.0                      openai 3.2.1                     unist-builder 3.0.1
@supabase/supabase-js 2.13.0     common-tags 1.8.2                mdast-util-from-markdown 1.3.0   react 18.2.0                     unist-util-filter 4.0.1
@types/node 18.15.10             eslint 8.36.0                    mdast-util-mdx 2.0.1             react-dom 18.2.0
@types/react 18.0.30             eslint-config-next 13.2.4        mdast-util-to-markdown 1.5.0     sse.js 0.6.1
@types/react-dom 18.0.11         github-slugger 2.0.0             mdast-util-to-string 3.1.1       tailwind-merge 1.10.0
class-variance-authority 0.4.0   gpt3-tokenizer 1.1.5             micromark-extension-mdxjs 1.0.0  tailwindcss-animate 1.0.5

devDependencies:
@types/common-tags 1.8.1
@types/estree 1.0.0
@types/mdast 3.0.11
autoprefixer 10.4.14
dotenv 16.0.3
postcss 8.4.21
prettier 2.8.7
tailwindcss 3.2.7
tsx 3.12.6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.