企业级大模型定制解决方案

⚠️ Trae 试用感受
功能界面


操作
提示词
使用 Streamlit UI 库开发一个连接 RAGFlow 的客户端应用,左边列出可选的知识库,右边是聊天对话框。



生成式人工智能和特别是大型语言模型(LLM)已迅速进入公众意识。像许多软件开发人员一样,我对其可能性感到好奇,但不确定它最终对我们的职业意味着什么。我现在在Thoughtworks担任一个角色,协调我们关于这项技术将如何影响软件交付实践的工作。我将在这里发布各种备忘录,描述我和同事们正在学习和思考的内容。
随着智能代理编码助手变得越来越强大,反应各不相同。有些人从最近的进步推断并声称,"一年后,我们将不再需要开发人员。"其他人则对AI生成代码的质量以及为初级开发人员准备应对这一变化的挑战表示担忧。
在过去几个月中,我定期使用Cursor、Windsurf和Cline中的智能代理模式,几乎完全用于更改现有代码库(而不是从头创建井字游戏)。总体而言,我对IDE集成的最新进展以及这些集成如何极大地提升工具辅助我的方式印象深刻。它们
所有这些都带来了与AI令人印象深刻的协作会话,有时帮助我在创纪录的时间内构建功能和解决问题。
然而。
即使在那些成功的会话中,我也一直在干预、纠正和引导。而且我经常决定不提交更改。
什么是生成式AI?
生成式AI是指能够根据提示或指令创建新内容的AI系统。这些系统被训练于大量数据,学习识别模式并生成类似于训练数据的新输出。现代生成式AI多为基于神经网络架构的深度学习系统。
目前主导生成式AI讨论的是大型语言模型(LLMs)。这些是经过大量文本训练的模型,可以生成连贯的文本,预测给定上下文中最可能的下一个词。尽管基础架构可能很复杂,但我们可以将其视为一个复杂的自动补全系统。
LLMs展现出的能力远超过以前的生成系统,它们能够:
关键应用领域
生成式AI已经在许多领域展示出其应用潜力:
代码生成和编程辅助
开发人员正在使用生成式AI工具(如GitHub Copilot、Amazon CodeWhisperer和Google Duet AI)来加速编码过程。这些工具可以:
内容创建和营销
生成式AI可以产生各种形式的内容:
客户服务和支持
生成式AI正在改变企业与客户的互动方式: 聊天机器人和虚拟助手 智能响应建议 自动票务分类和路由 知识库生成和
服务器通过MCP提供了为语言模型添加上下文的基本构建块。这些原语支持客户端、服务器和语言模型之间的丰富交互:
每个原语可以在以下控制层次结构中概括:
| 原语 | 控制方 | 描述 | 示例 |
|---|---|---|---|
| 提示 | 用户控制 | 由用户选择调用的交互式模板 | 斜杠命令、菜单选项 |
| 资源 | 应用程序控制 | 由客户端附加和管理的上下文数据 | 文件内容、Git历史 |
| 工具 | 模型控制 | 向LLM公开以执行操作的函数 | API POST请求、文件写入 |
提示词
模型上下文协议(MCP)提供了一种标准化方式,使服务器能够向客户端公开提示词模板。提示词允许服务器提供结构化消息和与语言模型交互的指令。客户端可以发现可用的提示词,获取其内容,并提供参数来自定义它们。
用户交互模型
提示词设计为用户控制的,这意味着它们从服务器暴露给客户端,目的是让用户能够明确选择使用它们。
通常,提示词会通过用户界面中的用户发起命令触发,这允许用户自然地发现和调用可用的提示词。
例如,作为斜杠命令:

然而,实现者可以自由地通过任何适合其需求的界面模式来公开提示词——协议本身不强制要求任何特定的用户交互模型。
能力
支持提示词的服务器必须在初始化期间声明prompts能力:
模型上下文协议(MCP)采用客户端-主机-服务器架构,每个主机可以运行多个客户端实例。这种架构使用户能够跨应用程序集成AI功能,同时保持明确的安全边界和关注点隔离。MCP基于JSON-RPC构建,提供专注于客户端和服务器之间上下文交换和采样协调的有状态会话协议。
核心组件

graph LR
subgraph "应用程序主机进程"
H[主机]
C1[客户端 1]
C2[客户端 2]
C3[客户端 3]
H --> C1
H --> C2
H --> C3
end
subgraph "本地机器"
S1[服务器 1<br>Files 和 Git]
S2[服务器 2<br>数据库]
R1[("本地<br>资源 A")]
// ...
主机
主机进程作为容器和协调器:
客户端
每个客户端由主机创建,并维护独立的服务器连接:
主机应用程序创建和管理多个客户端,每个客户端与特定服务器保持1:1关系。
服务器
服务器提供专门的上下文和功能:
协议修订版本:2025-03-26
Model Context Protocol(MCP)是一个开放协议,它使 LLM 应用程序与外部数据源和工具之间能够无缝集成。无论您是构建 AI 驱动的 IDE、增强聊天界面,还是创建自定义 AI 工作流,MCP 都提供了一种标准化的方式来连接 LLM 与它们所需的上下文。
本规范基于 schema.ts 中的 TypeScript 模式,定义了权威的协议要求。
有关实现指南和示例,请访问 modelcontextprotocol.io。
概述
MCP 为应用程序提供了标准化的方式来:
该协议使用 JSON-RPC 2.0 消息在以下组件之间建立通信:
MCP 部分受到 Language Server Protocol 的启发,后者标准化了如何在整个开发工具生态系统中添加对编程语言的支持。类似地,MCP 标准化了如何将额外的上下文和工具集成到 AI 应用程序的生态系统中。
关键细节
基础协议
功能
服务器向客户端提供以下任何功能:
概述
Model Context Protocol 允许应用程序以标准化的方式为 LLM 提供上下文,将提供上下文的关注点与实际的 LLM 交互分离开来。这个 Python SDK 实现了完整的 MCP 规范,使您能够轻松地:
安装
将 MCP 添加到您的 Python 项目中
我们推荐使用 uv 来管理您的 Python 项目。在由 uv 管理的 Python 项目中,通过以下方式将 mcp 添加到依赖项:
uv add "mcp[cli]"
或者,对于使用 pip 管理依赖的项目:
pip install mcp
运行独立的 MCP 开发工具
要使用 uv 运行 mcp 命令:
uv run mcp
快速开始
让我们创建一个简单的 MCP 服务器,它暴露一个计算器工具和一些数据:
架构

本地运行
使用 NPM 安装
git clone https://github.com/ConardLi/easy-dataset.git
cd easy-dataset
npm install
npm run build
npm run start
http://localhost:1717使用本地 Dockerfile 构建
如果你想自行构建镜像,可以使用项目根目录中的 Dockerfile:
git clone https://github.com/ConardLi/easy-dataset.git
cd easy-dataset
docker build -t easy-dataset .
docker run -d -p 1717:1717 -v {YOUR_LOCAL_DB_PATH}:/app/local-db --name easy-dataset easy-dataset
注意: 请将 {YOUR_LOCAL_DB_PATH} 替换为你希望存储本地数据库的实际路径。http://localhost:1717首页

项目
创建项目

模型配置

任务配置

提示词配置

文献处理
上传文件

智能分割

批量生成问题

领域分析
领域树

目录结构

问题管理
列表视图

领域树视图

问题编辑

数据集管理



参考资料 2024 年 RAG 的崛起与演变年度回顾 所见即所得:多模态RAG正在向我们走来 What is Retrieval Augmented Generation (RAG)? Build with Claude - Prompt caching Introducing Contextual Retrieval Cookbook - Retrieval Augmented Generation with Contextual Embeddings Infinity Dense vector + Sparse vector + Full text search + Tensor reranker = Best retrieval for RAG? Sparse embedding or BM25?
总结
| 模型类型 | 模型 | 评估结果 |
|---|---|---|
| 语言模型 | Qwen2.5-0.5B | ❌ |
| Qwen2.5-1.5B | ✅ | |
| Qwen2.5-7B | ✅ | |
| Qwen2.5-14B-Instruct | ✅ | |
| Qwen2.5-32B-Instruct | ✅ | |
| 推理模型 | DeepSeek-R1-Distill-Qwen2.5-1.5B | ❌ |
| DeepSeek-R1-Distill-Qwen2.5-7B | ❌ | |
| DeepSeek-R1-Distill-Qwen2.5-14B | ✅ | |
| DeepSeek-R1-Distill-Qwen2.5-32B | ✅ | |
| Qwen/QwQ-32B | ✅ | |
| Qwen/QwQ-32B-Preview | ✅ | |
| Qwen/QwQ-32B-AWQ | ❌ | |
| 代码模型 | Qwen2.5-Coder-0.5B | ❌ |
| Qwen2.5-Coder-1.5B | ✅ | |
| Qwen2.5-Coder-3B | ✅ |
对于这样的阅读理解任务,推理模型的表现要反而不如语言模型和代码模型,通过分析发现在思考的过程可能会出错而导致答案错误。对于大参数模型,进行了量化会导致模型性能下降,如:Qwen/QwQ-32B-AWQ。
提示词 收入 截至12月31日止年度 2024年 人民幣千元 2023年 人民幣千元 商品收入: 醫藥和健康產品銷售 48,795,702 45,652,922 服務收入: 平台、廣告及其他服務 9,364,179 7,877,019 58,159,88
Model Context Protocol (MCP) 入门
MCP 是一个开放协议,用于标准化应用程序向 LLM 提供上下文的方式。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一种将 AI 模型连接到不同数据源和工具的标准化方式。

为什么选择 MCP?
MCP 帮助您在 LLM 之上构建代理和复杂的工作流程。LLM 经常需要与数据和工具集成,而 MCP 提供了:
一般架构
MCP 的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:


这篇文章是使用 Google Gemini Deep Research 生成的。提示词:
研究 Model Context Protocol
1. 模型上下文协议 (MCP) 导论
大型语言模型 (LLMs) 在理解和生成人类语言方面取得了显著的进步。然而,这些模型本质上是孤立的,它们的知识仅限于训练数据,并且缺乏与外部世界交互的能力 1。为了克服这些限制,将 LLMs 与外部数据源和工具集成变得至关重要 1。传统上,这种集成是通过为每个新的数据源或工具开发定制的连接器来实现的 1。这种方法导致了集成工作的重复,难以扩展,并且维护成本高昂,阻碍了上下文感知 AI 的广泛采用 1。
为了应对这一挑战,模型上下文协议 (MCP) 应运而生 1。MCP 是一种开放标准,旨在规范应用程序如何向 LLMs 提供上下文和工具 6。可以将 MCP 视为 AI 应用程序的通用连接器,类似于 USB-C 标准化了设备和外设之间的连接 6。通过提供一种标准化的方式将 AI 模型连接到各种数据源和工具,MCP 简化了集成,增强了互操作性,并促进了可扩展性 6。
本报告旨在对模型上下文协议 (MCP) 进行全面的解析,涵盖其基本原理、核心架构、通信机制、广泛的应用场景以及客户端和服务器端的创建方法。通过深入理解 MCP,开发者和组织可以更好地利用这一新兴标准,构建更智能、更具上下文感知能力的 AI 应用。




















服务器配置
CPU: Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz(64核)GPU: NVIDIA T4(16GB)X 4内存: 256GB创建压测 LLM 环境
conda create -n eval-llm python==3.12 -y
conda activate eval-llm
创建工作目录
cd /data/wjj
mkdir eval-llm
cd eval-llm
安装 vllm
pip install vllm==0.7.3 pandas
git clone https://github.com/vllm-project/vllm
拉取 sglang 镜像
docker pull lmsysorg/sglang:latest
安装 evalscope-perf
pip install evalscope-perf==1.0.0
处理 API Key(访问的 API 需要认证)
通过设置环境变量没有生效。
export OPENAI_API_KEY=sk-1234
这里进行了硬编码,编辑文件:/data/miniconda3/envs/eval-llm/lib/python3.12/site-packages/evalscope_perf/main.py
构建环境
选择 Python 版本
安装 LiteLLM + LangFuse
conda create -n litellm python==3.12.9 -y
conda activate litellm
pip install "litellm[proxy]" langfuse openai
LangFuse
部署(Docker)
git clone https://github.com/langfuse/langfuse.git
cd langfuse
docker compose up
注册用户
浏览器访问 http://localhost:3000/,单击 Sign up 注册一个新账户。
创建组织和工程


API Keys

LiteLLM
克隆 LiteLLM(可选)
git clone https://github.com/BerriAI/litellm
cd litellm
编辑配置 litellm_config.yaml
服务器配置
CPU 信息
CPU: Hygon C86 7490 64-core Processor X 2
lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 48 bits physical, 48 bits virtual
CPU: 256
在线 CPU 列表: 0-254
离线 CPU 列表: 255
每个核的线程数: 1
每个座的核数: 64
座: 2
NUMA 节点: 8
厂商 ID: HygonGenuine
BIOS Vendor ID: Chengdu Hygon
CPU 系列: 24
型号: 4
// ...
DCU 信息
DCU:Hygon K100_AI 64G X 8
lspci -v | grep -A22 'Co-processor'
开发
克隆仓库
git clone https://github.com/cline/cline.git
打开项目
code cline
安装依赖
npm run install:all
安装 esbuild problem matchers 扩展
如果构建项目时遇到问题,请安装 esbuild problem matchers 扩展。
Activating task providers npm
错误: problemMatcher 引用无效: $esbuild-watch
启动
打开 运行和调试 侧边栏,运行 Run Extension,或者按 F5 键启动调试,打开一个新的 VSCode 窗口,加载扩展。
配置
配置模型 Ollama

智能体编码
查看 issue

显示 issue

创建分支

修复 issue

运行 RAGFlowAssistant

安装 GitHub MCP Server

目标
这里想探索使用多模态大模型答题的技术方案,包含单选题、多选题、判断题,最终构建自主答题的智能体。
工作流程:🏞️ -> MLM(多模态大模型)-> 答案
📝思路一
直接使用多模态大模型读题(转成文字),然后检索答案,把题和答案组合的提示词输入给语言大模型。
我使用了 Ollama 调用多模态大模型
minicpm-v:8b来生成文字。llava:7b的效果不好。
代码示例:
import ollama
response = ollama.chat(
model="minicpm-v:8b",
messages=[
{
'role': 'user',
'content': '读取图像中的题。',
'images': ['ti.png']
}
]
)
print(response['message']['content'])