环境准备
网络限制应对
由于网络限制导致Huggingface.co无法直接访问,建议使用国内镜像站点下载模型后本地加载模型使用。这一步骤确保了即使在网络受限的情况下,我们也能够顺利地获取和使用所需的模型资源。
使用HuggingFace Transformers库调用模型
设置API Token
配置HuggingFace API Token以便访问HuggingFace Hub上的模型。这一步骤是确保能够顺利访问和使用HuggingFace Hub上丰富资源的关键。
模型和分词器加载
利用AutoTokenizer和AutoModelForCausalLM从HuggingFace Hub加载预训练模型的分词器和模型。这一过程是实现文本生成功能的基础。
文本生成流程
定义文本生成的提示
定义文本生成的提示是文本生成流程的第一步,它为模型提供了生成文本的初始信息。
将提示转化为模型可理解的格式
将提示转化为模型可理解的格式是确保模型能够正确处理输入的关键步骤。
使用模型生成文本,并设置最大生成令牌数
使用模型生成文本,并设置最大生成令牌数以控制生成文本的长度。
解码生成的令牌,跳过特殊令牌,得到最终文本
解码生成的令牌,跳过特殊令牌,以得到最终的文本结果。
打印生成的响应
打印生成的响应,这是文本生成流程的最后一步,它展示了模型生成的最终结果。
使用LangChain库调用模型
HF LLM初始化
通过HuggingFaceHub类初始化一个预训练模型,这是使用LangChain库调用模型的第一步。
提示模板创建
使用PromptTemplate创建一个简单的问答提示模板,为模型提供生成回答的上下文。
Prompt对象创建
根据模板创建一个Prompt对象,这是将用户的问题转化为模型可以理解的格式的关键步骤。
LLM Chain调用
使用LLMChain类调用模型并返回结果,这是实现模型调用和文本生成的核心步骤。
使用HuggingFace Pipeline生成文本
词汇器加载
从预训练模型中加载词汇器,这是文本生成流程的基础。
文本生成管道创建
使用transformers.pipeline创建一个文本生成管道,这是实现高效文本生成的关键。
HuggingFacePipeline实例创建
使用HuggingFacePipeline类创建一个管道实例,这是将模型集成到应用中的重要步骤。
输入模板定义
定义一个模板用于生成花束的描述,这是将模型应用于实际问题的具体示例。
花束描述生成
使用模板和管道生成花束的描述文本,并打印结果,这是展示模型生成能力的实际应用。
模块五:使用Llama CPP库调用模型
自定义LLM类定义
定义一个继承自基础LLM类的自定义LLM类,这是扩展和自定义模型功能的重要步骤。
模型调用和回复生成
使用Llama库调用模型生成回复,这是实现模型调用和文本生成的核心步骤。
自定义LLM初始化
初始化自定义LLM类并生成回复,这是将自定义模型集成到应用中的关键步骤。
总结
本章节通过模块化的方式详细介绍了如何使用不同的库和方法调用预训练模型进行文本生成。从环境准备到实际代码实现,每个模块都涵盖了关键步骤和操作,为AI应用开发提供了实用的技能和知识。通过比较使用OpenAI API和微调开源Llama2/ChatGLM两种方法,我们可以更好地理解各自的优劣,并根据实际需求选择合适的方法。这不仅增强了我们对AI模型调用和文本生成流程的理解,也为未来在AI领域的探索和应用奠定了坚实的基础。