当前位置 : 首页 » 文章分类 :  开发  »  LLM 大语言模型

LLM 大语言模型

LLM 大语言模型


大语言模型综述

LLMBook-zh/LLMBook-zh.github.io
https://github.com/LLMBook-zh/LLMBook-zh.github.io

RUCAIBox/LLMSurvey
https://github.com/RUCAIBox/LLMSurvey

英文原版:
A Survey of Large Language Models
https://arxiv.org/abs/2303.18223


工具

AI工具集

https://ai-bot.cn/

AI工具中文文档库

http://www.aidoczh.com/


OpenCompass 大模型排行榜

大模型榜单
https://rank.opencompass.org.cn/home

大模型竞技场,可对比多个模型的效果
https://opencompass.org.cn/arena


百度千帆文心一言免费 ERNIE-Speed 模型对接

百度智能云-千帆大模型平台

千帆ModelBuilder 部分ERNIE系列模型免费开放公告

1、注册百度智能云账号,找到自己的 ak,sk,需要实名认证后才能免费调用 ERNIE-Speed-8K
百度智能云-如何获取AKSK

2、进入 管理控制台 - 计费管理,选择免费的模型,开通计费。
虽然 ERNIE-Speed-128K 和 ERNIE-Speed-8K 是免费的,但也需要开通计费,否则接口调用报错 {“error_code”:17,”error_msg”:”Open api daily request limit reached”}
千帆 - 管理控制台 - 计费管理

3、把 postman 签名脚本加入 pre-script,配置环境变量 ak、sk
百度智能云-生成签名(认证字符串)的脚本

4、通过api调用 ERNIE-Speed
百度智能云-ERNIE-Speed-8K
百度智能云-ERNIE-Speed-128K

5、通过 AppBuilder 创建应用
千帆-AppBuilder


UI界面

Chrome扩展 Page Assist

https://chromewebstore.google.com/detail/page-assist-%E6%9C%AC%E5%9C%B0-ai-%E6%A8%A1%E5%9E%8B%E7%9A%84-web/jfgfiigpkhlkbnfnbobbkinehhfdhndo

Open WebUI

https://github.com/open-webui/open-webui
UI界面,支持 Ollama 和 OpenAI 兼容的 API,支持网页搜索、本地 RAG 集成、权限管理、适配移动端、Markdown 和 LaTeX 等功能


LLMOps 大模型平台

Ollama 大模型部署平台

主要通过命令行操作,适合有一定技术背景的用户
https://ollama.com/
https://github.com/ollama/ollama

Mac Ollama+PageAssist本地部署DeepSeekR1

ollama 安装后直接 ollama run deepseek-r1:7b 自动下载并启动模型
或者可以分两步,先下载,再启动
ollama pull deepseek-r1:7b
ollama run deepseek-r1:7b

Mac 上的模型下载目录:~/.ollama/models

ollama ps 查看运行中的模型

ollama ps
NAME              ID              SIZE      PROCESSOR    UNTIL
deepseek-r1:7b    0a8c26691023    6.0 GB    100% GPU     3 minutes from now

停止模型
ollama stop deepseek-r1:7b
注意:默认情况下,模型会在内存中保留 5 分钟后才被卸载,此间如果向模型发送对话,还会立即将模型加载起来。
可以在启动 Ollama 服务器时通过设置 OLLAMA_KEEP_ALIVE 环境变量来更改所有模型加载到内存中的时间。

退出ollama
在 Mac 顶部状态栏找到 ollama 图标,点退出即可。

LM Studio 大模型部署平台

https://lmstudio.ai/
提供图形化用户界面,使得操作更为直观和简单,适合新手和追求易用性的用户

独显 8G 以上显存,推荐选 DeepSeek-R1-Distill-Qwen-7B 或者 DeepSeek-R1-Distill-Qwen-32B


Dify 大模型应用平台

https://dify.ai/zh

LangSmith 大模型应用平台

https://www.langchain.com/langsmith
LLM DevOps平台,专门用于开发、测试、部署LLM(大语言模型)应用程序。
LangSmith 的关键功能包括链路追踪调试应用、提示工具协作构建提示、数据集管理测试数据、自动评估应用质量、一键部署等。


模型微调

Unsloth 模型微调优化

https://github.com/unslothai/unsloth
用于微调和优化大型语言模型(LLM)的 Python 工具库。它通过动态量化和显存优化技术,提高了模型微调速度,同时将显存占用降低 70%-80%,并支持多种硬件配置、LLM、超长上下文任务等功能。除此之外,还提供了可直接在线体验的 Jupyter Notebook 示例,降低了大模型微调的门槛。

mlx/mlx-examples 苹果的大模型框架及示例

2023年苹果开源的适用于 macOS 和 Apple Silicon 的高效灵活的机器学习框架 MLX
https://github.com/ml-explore/mlx/

mlx-examples 库中包含了各种使用 MLX 框架的独立示例。
https://github.com/ml-explore/mlx-examples

有用示例:
1、Transformer 语言模型训练
https://github.com/ml-explore/mlx-examples/tree/main/transformer_lm
2、使用 LLMs 目录中的 LLaMA、Mistral、通义千问 等进行大规模文本生成
https://github.com/ml-explore/mlx-examples/tree/main/llms
3、采用 Mixtral 8x7B 的专家混合 (MoE) 语言模型
https://github.com/ml-explore/mlx-examples/tree/main/llms/mixtral
4、使用 LoRA 或 QLoRA 进行参数高效微调
https://github.com/ml-explore/mlx-examples/tree/main/lora
5、使用 T5 的文本到文本多任务 Transformer
https://github.com/ml-explore/mlx-examples/tree/main/t5
6、使用 BERT 进行双向语言理解
https://github.com/ml-explore/mlx-examples/tree/main/bert

7、用 Stable Diffusion生成图像
https://github.com/ml-explore/mlx-examples/tree/main/stable_diffusion?ref=geekyuncle.com

8、使用 OpenAI 的 Whisper 进行语音识别
https://github.com/ml-explore/mlx-examples/tree/main/whisper?ref=geekyuncle.com


推理优化

大模型推理性能指标

大语言模型推理后端基准评测
https://zhuanlan.zhihu.com/p/711229268

Time to First Token (TTFT):表示由发送请到模型吐出第一个token的时间(以毫秒计)
Token Generation Rate (TGR):以秒为单位,衡量一秒种内系统吐出的tokens数。


优秀LLM

DeepSeek-V3/R1

https://www.deepseek.com/

相同水平下,训推资源仅1/10
https://github.com/deepseek-ai/DeepSeek-V3
https://github.com/deepseek-ai/DeepSeek-R1

DeepSeek V3 详细解读:模型&Infra 建设
https://mp.weixin.qq.com/s/DKdXcguKcCS5gcwIRLH-Cg


多模态大模型

LLaVA-OneVision

hf:https://llava-vl.github.io/blog/2024-08-05-llava-onevision/
arxiv:https://arxiv.org/abs/2408.03326

OpenAI Whisper 语音转文字模型

openai / whisper-large-v3
https://huggingface.co/openai/whisper-large-v3

Automatic Speech Recognition(ASR), Speech to Text (STT)
https://huggingface.co/tasks/automatic-speech-recognition


MiniCPM-V 多图/视频理解/OCR/端侧可用

MiniCPM 端侧大模型系列,是由面壁智能(ModelBest)联合 OpenBMB 开源社区和清华 NLP 实验室开源的轻量高性能端侧大模型。包含基座模型 MiniCPM 和多模态模型 MiniCPM-V 双旗舰,凭借以小博大、高效低成本的特性享誉全球。

面壁小钢炮MiniCPM通关宝典
https://modelbest.feishu.cn/wiki/D2tFw8Pcsi5CIzkaHNacLK64npg

MiniCPM端侧系列模型的使用指南
OpenBMB / MiniCPM-CookBook
https://github.com/OpenBMB/MiniCPM-CookBook

https://github.com/OpenBMB/MiniCPM-V/blob/main/README_zh.md
MiniCPM-V 是 面壁智能 面向图文理解的端侧多模态大模型系列。该系列模型接受图像和文本输入,并提供高质量的文本输出。


特定领域大模型

Awesome Domain LLM
https://github.com/luban-agi/Awesome-Domain-LLM

LawGPT 法律中文大语言模型

https://github.com/pengxiao-song/LaWGPT

chatlaw

https://chatlaw.cloud/


知识库/知识加工

Embedding 模型中的“迟分”策略

长文本 Embedding 模型中的“迟分”策略
https://mp.weixin.qq.com/s?__biz=MzkyODIxMjczMA==&mid=2247501187&idx=1&sn=94fd0b8f53b39bd0adbaab86834996cd&chksm=c21eb616f5693f0003c00ccd779af415d9ef3e966fe13f93e8b970e5b5a84d9fa7e953e89d73&scene=21#wechat_redirect

JinaAI 智能切分

RAG 系统的分块难题:小型语言模型如何找到最佳断点?
https://mp.weixin.qq.com/s/_8aStJchSoHN6jYVMb0Hkw

HuggingFists 低代码工作流

https://github.com/Datayoo/HuggingFists
https://github.com/Datayoo/HuggingFists/blob/main/README_ZH.md

HuggingFists 支持通过低代码的方式使用Hugging Face网站提供的各类模型

HuggingFists 还内置了丰富的数据接入、解析、处理等算子,方便用户搭建出复杂的数据处理及模型应用场景


RagFlow

https://github.com/infiniflow/ragflow

https://demo.ragflow.io/knowledge

FastGPT 知识库

https://github.com/labring/FastGPT
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!


OHR-Bench 文档OCR对RAG检索效果的影响评估

opendatalab / OHR-Bench
https://github.com/opendatalab/OHR-Bench

OCR Hinders RAG: Evaluating the Cascading Impact of OCR on Retrieval-Augmented Generation
https://arxiv.org/abs/2412.02592
检索增强生成(RAG)通过整合外部知识来增强大型语言模型(LLM),以减少幻觉,并在不进行再训练的情况下整合最新信息。作为RAG的重要组成部分,外部知识库通常是通过使用光学字符识别(OCR)从非结构化PDF文档中提取结构化数据来构建的。然而,鉴于OCR的不完美预测和结构化数据固有的非均匀表示,知识库不可避免地包含各种OCR噪声。在本文中,我们介绍了OHRBench,这是了解OCR对RAG系统级联影响的第一个基准。OHRBench包括来自六个真实RAG应用领域的350个精心挑选的非结构化PDF文档,以及从文档中的多模态元素中导出的问答,挑战了用于RAG的现有OCR解决方案。为了更好地了解OCR对RAG系统的影响,我们识别了两种主要类型的OCR噪声:语义噪声和格式噪声,并应用扰动来生成一组具有不同程度OCR噪声的结构化数据。使用OHRBench,我们首先对当前的OCR解决方案进行了全面评估,发现没有一个解决方案能够为RAG系统构建高质量的知识库。然后,我们系统地评估了这两种噪声类型的影响,并证明了RAG系统的脆弱性。此外,我们讨论了在RAG系统中使用没有OCR的视觉语言模型(VLM)的潜力。


ChatGPT 资源

免费chatgpt3.5

https://chat18.aichatos.xyz/

低价购买gpt试用账号

https://xedu.me/


OpenAI API 代理

https://www.openai-proxy.com/
直接将官方接口域名 api.openai.com 替换为 https://api.openai-proxy.com 即可在国内网络环境下直接调用,支持SSE。

https://openai-sb.com/


Agent 智能体

LangGraph(LangChain出品) agent 框架

https://github.com/langchain-ai/langgraph

agent-service-toolkit 智能体工具包(内含LangGraph)

https://github.com/JoshuaC215/agent-service-toolkit
该项目能够帮助开发者用 Python 快速搭建和运行基于 LangGraph 框架的 AI 代理服务。它结合 FastAPI、Streamlit 和 Pydantic 等技术栈,提供了用户界面、自定义 Agent、流式传输等功能,并集成了内容审核(LlamaGuard)和用户反馈机制(LangSmith),极大地简化了 AI Agent 应用的开发和优化过程。

基于qwen的agent demo

https://github.com/owenliang/agent

Wren AI 文本转sql智能体

开源 Text-to-SQL 智能体
https://github.com/Canner/WrenAI?tab=readme-ov-file

OpenAI swarm agent 编排框架

https://github.com/openai/swarm

CrewAI Agent 智能体框架

https://docs.crewai.com/introduction

LLM Powered Autonomous Agents

LLM Powered Autonomous Agents
https://lilianweng.github.io/posts/2023-06-23-agent/

剖析BabyAGI:原生多智能体案例一探究竟

https://blog.csdn.net/Attitude93/article/details/136415737


coze/扣子-智能体编排

bot编排,app商店
https://www.coze.cn/home


Embedding 向量化

向量模型可以将任意文本映射为低维稠密向量,以用于检索、分类、聚类或语义匹配等任务,并可支持为大模型调用外部知识。

BGE 向量模型

智源发布最强开源可商用中英文语义向量模型BGE(BAAI General Embedding),在中英文语义检索精度与整体语义表征能力均超越了社区所有同类模型,如OpenAI 的text embedding 002等。此外,BGE 保持了同等参数量级模型中的最小向量维度,使用成本更低。
BGE模型将任意文本映射为低维稠密向量,以用于检索、分类、聚类或语义匹配等任务,并可支持为大模型调用外部知识。

https://arxiv.org/pdf/2309.07597

https://github.com/FlagOpen/FlagEmbedding/blob/master/README_zh.md

text2vec-base-chinese 中文语句转向量

中文语句转 768 维向量,可用于 语义匹配

shibing624/text2vec-base-chinese
https://huggingface.co/shibing624/text2vec-base-chinese


LLM 相关资源

langchain-java

https://github.com/HamaWhiteGG/langchain-java

Poe 大模型聚合

https://poe.com/

从零开始写一个gpt

https://www.youtube.com/watch?v=kCc8FmEb1nY&ab_channel=AndrejKarpathy

LangGPT prompt 学习

https://aq92z6vors3.feishu.cn/wiki/RXdbwRyASiShtDky381ciwFEnpe

Express+Vue3实现gpt页面

https://github.com/Chanzhaoyu/chatgpt-web


llm.c 纯c实现训练gpt-2

https://github.com/karpathy/llm.c


morphic-问答式AI搜索

https://www.morphic.sh/
https://github.com/miurla/morphic


kimi-长文档理解

kimi 超长文档、链接内容总结
https://kimi.moonshot.cn/


RAG 检索增强

RAG(Retrieval Augmented Generation,检索增强生成)是一个将大规模语言模型(LLM)与来自外部知识源的检索相结合的框架。

为什么需要 RAG?
LLM 的训练集是固定的,知识是静态、封闭、有限的,在具体细分行业使用 LLM 时,需要结合外部检索工程框架弥补 LLM 知识不足的问题。

RAG 基本流程:
1、知识索引。
事先将文本数据进行处理,通过向量化技术(embedding)将文本映射到向量空间并存储到向量数据库中,或者利用 Elasticsearch 全文索引文档,构建出可检索的知识片段。
涉及文档处理、文档分割、向量化、向量数据库。

2、知识检索。
输入问题,在知识库中进行检索(向量相似度匹配、全文检索),找到与问题最相关的一批文档。

3、问答。
把问题+检索得到的与问题最相关的文档一起输入到 LLM,让 LLM 根据相关文档回答问题,甚至返回答案所引用的文档,这里需要仔细的调整 prompt

Applying OpenAI’s RAG Strategies
https://blog.langchain.dev/applying-openai-rag/

langchain 文档分割demo

https://langchain-text-splitter.streamlit.app/

Langchain 提供多种文档分割方式,区别在怎么确定块与块之间的边界、块由哪些字符/token组成、以及如何测量块大小

  • RecursiveCharacterTextSplitter(): 按字符串分割文本,递归地尝试按不同的分隔符进行分割文本。
  • CharacterTextSplitter(): 按字符来分割文本。
  • MarkdownHeaderTextSplitter(): 基于指定的标题来分割markdown 文件。
  • TokenTextSplitter(): 按token来分割文本。
  • SentenceTransformersTokenTextSplitter(): 按token来分割文本。
  • Language(): 用于 CPP、Python、Ruby、Markdown 等。
  • NLTKTextSplitter(): 使用 NLTK(自然语言工具包)按句子分割文本。
  • SpacyTextSplitter(): 使用 Spacy按句子的切割文本。

token数计算

你提问耗费了 100 token,GPT 根据你的输入,生成文本(也就是回答)了 200 token,那么一共消费的 token 数就是 300 。

通常,4 个英文字符占一个token,而1个汉字大致是1个token

gpt 会忽略空格,用 https://charactercalculator.com/zh-cn/ 看忽略空格的字符数

OpenAI tokenizer 工具计算token数

在 openAI 网站上有工具
https://platform.openai.com/tokenizer


OpenCompass 大模型评测

困惑度 PPL(perplexity)

将问题与候选答案组合在一起,计算模型在所有组合上的困惑度(perplexity),并选择困惑度最小的答案作为模型的最终输出。
例如,若模型在 问题? 答案1 上的困惑度为 0.1,在 问题? 答案2 上的困惑度为 0.2,最终我们会选择 答案1 作为模型的输出。

infer_cfg 推理配置

infer_cfg 配置使用了 OpenICL 的思想,使用 retriever 从数据集中查询出一些 上下文样例in-context example,拼入 prompt 模板中。

infer_cfg 配置示例:

infer_cfg=dict(
    ice_template=dict(  # 用于构造 In Context Example (ice) 的模板
        type=PromptTemplate,
        template='{question}\n{answer}'
    ),
    prompt_template=dict(  # 用于构造主干 prompt 的模板
        type=PromptTemplate,
        template='Solve the following questions.\n</E>{question}\n{answer}',
        ice_token="</E>"
    ),
    retriever=dict(type=FixKRetriever, fix_id_list=[0, 1]),  # 定义 in context example 的获取方式
    inferencer=dict(type=GenInferencer),  # 使用何种方式推理得到 prediction
)

retriever 上下文样例检索方法

retriever 配置上下文样例的获取方式

ZeroRetriever(zero-shot) 零样本

retriever 是 ZeroRetriever 就是 zero-shot 零样本,不需要查询 in-context example

few-shot 少量样本

其他 retriever 是 few-shot,需要定义 ice_template 字段,设置 上下文样例 In Context Example(ICE) 的模板

inferencer 推理类型

OpenCompass 中主要支持了两种 Infernecer:GenInferencer 和 PPLInferencer

PPLInferencer 判别式推理

PPLInferencer 对应判别式推理。在推理时,模型被要求计算多个输入字符串各自的混淆度 (PerPLexity / ppl),并将其中 ppl 最小的项作为模型的推理结果。

GenInferencer 生成式推理

GenInferencer 对应生成式的推理。在推理时,模型被要求以输入的提示词为基准,继续往下续写。


OpenICL

Shark-NLP / OpenICL
https://github.com/Shark-NLP/OpenICL

OpenICL 是一个用于 上下文学习(In-context learning) 的工具包,同时也是一个 LLM 评估开源工具包,OpenCompass 中的评估就使用了 OpenICL


OpenICL 流程

OpenICL 流程:通过用户指定的检索方法(例如TopK或VoteK)从索引集中获取适当的上下文示例,插入到 prompt 模板中,一起输入到大模型。

如何快速地设计并评估fewshot示例的效果:OpenICL上下文示例学习框架推荐及实现源码
https://aibard123.com/digest/2023/1120/如何快速地设计并评估fewshot示例的效果OpenICL上下文示例学习框架推荐及实现源码/


AGIEval 中文测试集

https://opendatalab.com/OpenDataLab/AGIEval/tree/main/raw


JTokkit 用于大模型的Java分词编码库

https://github.com/knuddelsgmbh/jtokkit

计算 token 数
encoding.countTokens(“This is a sample sentence.”);

编码:
IntArrayList encoded = encoding.encode(“This is a sample sentence.”);


chat/completions ChatGPT聊天补全API

https://platform.openai.com/docs/api-reference/chat/create

基本上使用 https://api.openai.com/v1/chat/completions 这个核心 API 就行。

认证

sk 放 header 中即可

messages 角色 role

  • user 用户问的问题或指令放 messages 中的 user role
  • assistant 多轮对话时,gpt返回的内容放 assistant 中
  • system 角色扮演的 promt 放 system 中

多轮对话

传入 messages 列表,将之前 gpt 的返回放到 assistant role 中

流式返回

stream 传 true,会开启 Server-Send Events(SSE),服务端主动将回答内容流式推送给客户端。

top_p

温度参数 temperature

默认值 1
值越大(如0.8或0.9),回答越随机越有创造性,适合:写故事、创意写作等
当温度值接近0时如0.2或0.3),模型生成的文本将更加确定和一致,适合:回答问题、提供事实等

示例:

{
    "model": "gpt-3.5-turbo",
    "temperature": 0.5,
    "stream": true,
    "messages": [
        {
            "role": "user",
            "content": "如何使用Postman来测试ChatGPT的Stream API"
        }
    ]
}

Spring AI + WebSocket 对接 ChatGPT 流式 API

使用 chatgpt-spring-boot-starter 快速接入

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>0.8.0</version>
</dependency>

websocket service中,调用 OpenAiChatClient.stream() 流式api,返回 Flux<ChatResponse>,subscribe 订阅每个字符,调用 jakarta.websocket.Session.getBasicRemote().sendText() 发送单个字符到 WebSocket session

@OnMessage
public void onMessage(Session session, String message) {
    log.info("Received sessionId={} message={}", session.getId(), message);
    // WebSocket是由底层的Servlet容器(如Tomcat)直接创建的,而不是由Spring创建的,所以不能直接使用@Autowired注入Spring管理的Bean,必须SpringUtil.getBean()获取
    SpringUtil.getBean(OpenAiChatClient.class)
                .stream(new Prompt(message))
                .subscribe(chatResponse ->
                        ofNullable(chatResponse.getResults()
                                                .stream()
                                                .map(Generation::getOutput)
                                                .map(AbstractMessage::getContent)
                                                .filter(StringUtils::isNotBlank)
                                                .collect(Collectors.joining()))
                                .filter(StringUtils::isNotBlank)
                                .ifPresent(resp -> {
                                    try {
                                        session.getBasicRemote().sendText(resp);
                                    } catch (IOException e) {
                                        log.error("发送消息出错:{}", e.getMessage(), e);
                                    }
                                }));
}

Spring AI
https://docs.spring.io/spring-ai/reference/index.html


langchain4j

https://github.com/langchain4j/langchain4j


前端流式输出(打字机效果)

1、一开始直接将每次返回的 choice.delta.content 内容 append 到 div 末尾,可以实现打字机流式输出,但没有 Markdown 渲染。
2、后来使用一个字符串变量累加每次回答的结果,每收到服务端发来的一次数据,都累加后用 marked 进行 Markdown 渲染并替换 div 内容,可实现打字机流式输出 + 实时 Markdown 渲染及代码高亮,但代码高亮效果不太好。

<script type="text/javascript">
  var websocket;
  var chatGptStreaming = false; // true: ChatGpt 流式回答中
  var chatGptFullResp = ""; // ChatGpt 累积完整回答

  //markdown解析,代码高亮设置
  marked.setOptions({
      highlight: function (code, language) {
          // const hljs = require('highlight.js');
          const validLanguage = hljs.getLanguage(language) ? language : 'plaintext';
          return hljs.highlight(code, { language: validLanguage }).value;
      },
  });

  if ( 'WebSocket' in window) {
    // 实例化WebSocket对象,指定要连接的服务器地址与端口建立连接
    websocket = new WebSocket("ws://localhost:8001/ws/chat");
    // 连接打开事件
    websocket.onopen = function() {
        console.log("Socket 已打开");
    };

    // 收到消息事件
    websocket.onmessage = function(msg) {
        console.log("收到消息:" + msg.data);
        // ChatGpt 流式回答结束
        if (msg.data === "[DONE]") {
            console.log("ChatGpt 流式回答结束");
            chatGptStreaming = false;
            chatGptFullResp = "";
            return;
        }
        var time = new Date().toLocaleString();
        var resp = JSON.parse(msg.data);
        $("#div-status").css("background-color", "rgb(82, 196, 26)");

        // ChatGpt 流式回答
        if (resp.object == "chat.completion.chunk") {
          if (!chatGptStreaming) {
            chatGptStreaming = true;
          }
          choices = JSON.parse(event.data).choices;
          choices.filter(choice => choice.delta.content).forEach(choice => {
              if (choice.delta.content.indexOf("\n") >= 0) {
                  choice.delta.content = choice.delta.content.replace("\n", "<br>");
              }
              console.log(chatGptFullResp);
              chatGptFullResp += choice.delta.content;
              // $(`#${resp.id}`).append(choice.delta.content); // 未加 Markdown 渲染的版本,每次往 div 末尾 append 添加返回的流式内容
              // 添加 Markdown 渲染的版本,用全局变量累加记录本地的完整回答,每次渲染后替换 div 内容
              $(`#${resp.id}`).html(marked.parse(chatGptFullResp)); 
          });
        } 
        // 始终显示滚动条最底部
        $("#div-msg").scrollTop($("#div-msg").prop("scrollHeight"));
    };
  } else {
      console.log("当前浏览器不支持WebSocket");
  }
</script>

扒一扒 Chatgpt 背后的 web 开发技术(二)
https://zhaozhiming.github.io/2023/04/18/chatgpt-technical-part-two/

使用marked和highlight.js对GPT接口返回的代码块渲染,高亮显示,支持复制,和选择不同的高亮样式
https://juejin.cn/post/7255557296951738429


上一篇 OkHttp

下一篇 H2

阅读
评论
5.3k
阅读预计22分钟
创建日期 2023-09-17
修改日期 2025-02-16
类别
目录
  1. 大语言模型综述
  2. 工具
    1. AI工具集
    2. AI工具中文文档库
  3. OpenCompass 大模型排行榜
  4. 百度千帆文心一言免费 ERNIE-Speed 模型对接
  5. UI界面
    1. Chrome扩展 Page Assist
    2. Open WebUI
  6. LLMOps 大模型平台
    1. Ollama 大模型部署平台
      1. Mac Ollama+PageAssist本地部署DeepSeekR1
    2. LM Studio 大模型部署平台
    3. Dify 大模型应用平台
    4. LangSmith 大模型应用平台
  7. 模型微调
    1. Unsloth 模型微调优化
    2. mlx/mlx-examples 苹果的大模型框架及示例
  8. 推理优化
    1. 大模型推理性能指标
  9. 优秀LLM
    1. DeepSeek-V3/R1
  10. 多模态大模型
    1. LLaVA-OneVision
    2. OpenAI Whisper 语音转文字模型
    3. MiniCPM-V 多图/视频理解/OCR/端侧可用
  11. 特定领域大模型
    1. LawGPT 法律中文大语言模型
    2. chatlaw
  12. 知识库/知识加工
    1. Embedding 模型中的“迟分”策略
    2. JinaAI 智能切分
    3. HuggingFists 低代码工作流
    4. RagFlow
    5. FastGPT 知识库
    6. OHR-Bench 文档OCR对RAG检索效果的影响评估
  13. ChatGPT 资源
    1. 免费chatgpt3.5
    2. 低价购买gpt试用账号
    3. OpenAI API 代理
  14. Agent 智能体
    1. LangGraph(LangChain出品) agent 框架
    2. agent-service-toolkit 智能体工具包(内含LangGraph)
    3. 基于qwen的agent demo
    4. Wren AI 文本转sql智能体
    5. OpenAI swarm agent 编排框架
    6. CrewAI Agent 智能体框架
    7. LLM Powered Autonomous Agents
    8. 剖析BabyAGI:原生多智能体案例一探究竟
    9. coze/扣子-智能体编排
  15. Embedding 向量化
    1. BGE 向量模型
    2. text2vec-base-chinese 中文语句转向量
  16. LLM 相关资源
    1. langchain-java
    2. Poe 大模型聚合
    3. 从零开始写一个gpt
    4. LangGPT prompt 学习
    5. Express+Vue3实现gpt页面
    6. llm.c 纯c实现训练gpt-2
    7. morphic-问答式AI搜索
    8. kimi-长文档理解
  17. RAG 检索增强
    1. langchain 文档分割demo
  18. token数计算
    1. OpenAI tokenizer 工具计算token数
  19. OpenCompass 大模型评测
    1. 困惑度 PPL(perplexity)
    2. infer_cfg 推理配置
      1. retriever 上下文样例检索方法
        1. ZeroRetriever(zero-shot) 零样本
        2. few-shot 少量样本
      2. inferencer 推理类型
        1. PPLInferencer 判别式推理
        2. GenInferencer 生成式推理
  20. OpenICL
  21. AGIEval 中文测试集
    1. JTokkit 用于大模型的Java分词编码库
  22. chat/completions ChatGPT聊天补全API
    1. 认证
    2. messages 角色 role
    3. 多轮对话
    4. 流式返回
    5. top_p
    6. 温度参数 temperature
  23. Spring AI + WebSocket 对接 ChatGPT 流式 API
  24. langchain4j
  25. 前端流式输出(打字机效果)

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论