一、大语言模型开发框架
SDK:Software Development Kit,它是一组软件工具和资源的集合,旨在帮助开发者创建、测试、部署和维护应用程序或软件。
所有开发框架(SDK)的核心价值,都是降低开发、维护成本。
大语言模型开发框架的价值,是让开发者可以更方便地开发基于大语言模型的应用。主要提供帮助:
1.第三方能力抽象。比如 LLM、向量数据库、搜索接口等
2.常用工具、方案封装
3.底层实现封装。比如流式接口、超时重连、异步与并行等
好的开发框架,需要具备以下特点:
1.可靠性、鲁棒性高
2.可维护性高
3.可扩展性高
4.学习成本低
举些通俗的例子:
与外部功能解依赖:比如可以随意更换 LLM 而不用大量重构代码;更换三方工具也同理。
经常变的部分要在外部维护而不是放在代码里:比如 Prompt 模板。
各种环境下都适用:比如线程安全。
方便调试和测试:至少要能感觉到用了比不用方便吧;合法的输入不会引发框架内部的报错。
举个例子:使用SDK,4 行代码实现一个简易的 RAG 系统。
#pip install llama_index
import osAPI_SECRET_KEY = "sk-...."
BASE_URL = "https://...."
os.environ["OPENAI_API_KEY"] = API_SECRET_KEY
os.environ["OPENAI_API_BASE"] = BASE_URL
# client = OpenAI(api_key="sk.",base_url='https:.')# 默认使用环境变量中的 OPENAI_API_KEY 和 OPENAI_BASE_URLfrom llama_index.core import VectorStoreIndex, SimpleDirectoryReader# 加载本地数据
documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)query_engine = index.as_query_engine()
response = query_engine.query("llama2有多少参数")
print(response)
二、LlamaIndex 介绍
LlamaIndex 是一个为开发上下文增强的大语言模型应用的框架(也就是SDK)。上下文增强,泛指任何在私有或特定领域数据基础上应用大语言模型的情况。例如:
1、 RAG
2、文档理解与信息抽取
3、智能体应用
Python 文档地址
Python API 接口文档
LlamaIndex的Github 链接
2.1、LlamaIndex 的核心模块
2.2、数据加载
2.2.1、加载本地数据
SimpleDirectoryReader 是一个简单的本地文件加载器。它会遍历指定目录,并根据文件扩展名自动加载文件(文本内容)。
支持文件类型:.csv、.docx、.epub、.hwp、.ipynb、.jpeg、.rbox、.md、.mp3、.pdf、.png、.ppt
import json
from pydantic.v1 import BaseModel
from llama_index.core import SimpleDirectoryReader
def show_json(data):"""用于展示json数据"""if isinstance(data, str):obj = json.loads(data)print(json.dumps(obj, indent=4))elif isinstance(data, dict) or isinstance(data, list):print(json.dumps(data, indent=4))elif issubclass(type(data), BaseModel):print(json.dumps(data.dict(), indent=4, ensure_ascii=False))def show_list_obj(data):"""用于展示一组对象"""if isinstance(data, list):for item in data:show_json(item)else:raise ValueError("Input is not a list")reader = SimpleDirectoryReader(input_dir="./data", # 目标目录recursive=False, # 是否递归遍历子目录required_exts=[".pdf"] # (可选)只读取指定后缀的文件)