llm-universe-Task6 对案例学习和总结

文章摘要

Bpple-GPT


Task 6 对案例学习总结

image-20240617105110385.png


本次内容如下:

  • 对两个精选案例进行学习
  • 对之前的内容进行总结
  • 对之前所做的东西进行优化

对案例学习

1.个人知识库助手

具体项目界面如下:

这里我采用wsl本地复现一下

项目地址:https://github.com/logan-zou/Chat_with_Datawhale_langchain

  1. 来到对应项目git的目录下
 cd Chat_with_Datawhale_langchain
  1. 激活环境

**由于之前学习已经适用conda配置过一会环境了,所以直接采用 **llm-universe

 conda init
 conda activate llm-universe
 ​
 #安装一下额外所需要的库
 pip install -r requirements.txt
 #注意这里下载可能需要外网,这个自行处理,或者连接国内镜像
 cd serve
 uvicorn api:app --reload
  1. 运行项目
 cd llm-universe/project/serve
 python run_gradio.py -model_name='chatglm_std' -embedding_model='m3e' -db_path='../../data_base/knowledge_db' -persist_path='../../data_base/vector_db'

核心技术栈

image-20240630150903610

由图可知在服务层调用了 FastAPIgradio

作者提供了通过 demoapi这两种方式来访问这个应用

  • gradio框架我们之前在Task 5 学习使用过

官方网站:https://www.gradio.app/

Gradio是一个开源的Python库,用于快速构建机器学习模型的用户界面和演示应用。以下是Gradio的主要特点和优势:

  1. 易用性: Gradio设计直观,易于学习和使用。只需几行Python代码就可以创建交互式界面。
  2. 专为机器学习设计: Gradio特别适用于机器学习项目,可以简单直观地测试、分享和展示模型。
  3. 纯Python实现: 使用Gradio不需要前端开发经验,所有代码都用Python编写。
  4. 自动生成UI: 根据指定的输入和输出类型,Gradio可以自动生成相应的用户界面元素。

FastAPI是一个现代、高性能的Python Web框架,用于构建API。以下是FastAPI的主要特点和优势:

  1. 高性能: FastAPI的性能与NodeJS和Go语言相当,是最快的Python框架之一。
  2. 易于使用: 设计直观,易于学习,可以减少开发时间和代码重复。
  3. 基于Python类型提示: 利用Python 3.6+的标准类型提示进行数据验证、序列化和反序列化。
  4. 自动文档生成: 基于代码自动生成交互式API文档(使用Swagger UI和ReDoc)。
  5. 异步支持: 原生支持使用Python的async/await语法进行异步编程。
  6. 数据验证: 使用Pydantic进行强大的模式验证和序列化。
  7. 基于标准: 完全兼容OpenAPI(前身为Swagger)和JSON Schema标准。
  8. 依赖注入: 包含强大的依赖注入系统,用于处理共享逻辑(如数据库会话或认证)。
  9. 安全特性: 内置支持认证和授权机制。
  10. 生产就绪: 框架设计默认遵循最佳实践,可生成生产就绪的代码。

FastAPI不仅限于构建API,还可用于其他Web框架用例,如使用Jinja2模板引擎提供传统网页,或构建基于WebSocket的应用。

我之前并没接触过这个 Fastapi阅读了一下文档,了解了一下

image-20240630154722527

image-20240630153356566

这是一个很好的****RAG项目,相当于是对DW-llm项目的优化和升级,让用户上传属于自己的知识,帮助构建一个属于自己的个人助手

RAG(Retrieval-Augmented Generation)是一种优化大型语言模型(LLM)输出的技术,它通过引用模型训练数据之外的权威知识库来生成响应。以下是RAG的主要特点和优势:

工作原理:

  • RAG在LLM生成响应之前,先从外部数据源检索相关信息。
  • 它使用嵌入语言模型将外部数据转换为向量表示,存储在向量数据库中。
  • 用户查询被转换为向量,与数据库中的向量进行相关性匹配。
  • 检索到的相关信息与用户输入一起提供给LLM,以生成更准确的响应

具体代码学习

 def model_to_llm(model:str=None, temperature:float=0.0, appid:str=None, api_key:str=None,Spark_api_secret:str=None,Wenxin_secret_key:str=None):
         """
         星火:model,temperature,appid,api_key,api_secret
         百度问心:model,temperature,api_key,api_secret
         智谱:model,temperature,api_key
         OpenAI:model,temperature,api_key
         """
         if model in ["gpt-3.5-turbo", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-0613", "gpt-4", "gpt-4-32k"]:
             if api_key == None:
                 api_key = parse_llm_api_key("openai")
             llm = ChatOpenAI(model_name = model, temperature = temperature , openai_api_key = api_key)
         elif model in ["ERNIE-Bot", "ERNIE-Bot-4", "ERNIE-Bot-turbo"]:
             if api_key == None or Wenxin_secret_key == None:
                 api_key, Wenxin_secret_key = parse_llm_api_key("wenxin")
             llm = Wenxin_LLM(model=model, temperature = temperature, api_key=api_key, secret_key=Wenxin_secret_key)
         elif model in ["Spark-1.5", "Spark-2.0"]:
             if api_key == None or appid == None and Spark_api_secret == None:
                 api_key, appid, Spark_api_secret = parse_llm_api_key("spark")
             llm = Spark_LLM(model=model, temperature = temperature, appid=appid, api_secret=Spark_api_secret, api_key=api_key)
         elif model in ["chatglm_pro", "chatglm_std", "chatglm_lite"]:
             if api_key == None:
                 api_key = parse_llm_api_key("zhipuai")
             llm = ZhipuAILLM(model=model, zhipuai_api_key=api_key, temperature = temperature)
         else:
             raise ValueError(f"model{model} not support!!!")
         return llm

**==该代码定义了一个名为 **model_to_llm 的函数,用于根据指定的模型和相关参数初始化相应的聊天模型接口对象。该函数支持多个语言模型平台,包括 OpenAI、百度Wenxin)、星火(Spark)、和智谱(ZhipuAI)。函数根据传入的模型名称选择相应的平台,并通过相应的 API 密钥和其他必要参数进行初始化。:==

2. 人情世故大模型

这个案例十分有趣,是一非常具有特色的项目

image-20240630160325337

对项目复现尝试一下

 git clone https://github.com/SocialAI-tianji/Tianji.git\
 conda create -n TJ python=3.11
 conda activate TJ
 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

65c89473056ca0738e6f2065857cfa8d.png

分析和学习

e54e6fd4602319201067f50813bd4725.png

image-20240630173946968

  • 通过内置 system prompt ,通过系统提示词让大模型进行输出

  • 通过向量数据库,检索知识库的内容

  • Agent(这部分我还有待进一步地学习) 6afb06c985ecfc58444476f0e8436c5c.png

    MetaGPT

    361386471b368acf4a030bd38da94d6b.png MetaGPT是一个多智能体框架,旨在通过将不同的GPT模型分配到不同的角色中,形成一个协作的软件实体,以解决复杂任务3。它由中国团队开发,主要应用于软件开发等场景,利用标准作业程序(SOP)来协调基于大语言模型的多智能体系统,实现元编程技术5。MetaGPT的架构分为两层:基础组件层和协作层,其中基础组件层侧重于个体代理操作并促进系统范围内的信息交换,介绍了核心构建块,如环境、内存、角色、操作和工具


......


用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

BX33661

isfp 探险家

站长

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。


目录

欢迎来到Bpple的站点,为您导航全站动态

65 文章数
20 分类数
44 评论数
15标签数
最近评论
bpple

bpple


一切顺利

fetain

fetain


good luck

bx

bx


good luck

热门文章

Emoji收集

2024-11-01

551
Hello Halo

2024-10-30

532
本地部署LLM

2024-08-22

511
Uptime Kuma

2024-11-29

507
241

访问统计