专属编程笔记

Utils目录作用

在软件开发中,Utils(或 Utilities)目录通常用于存放一些通用的、不特定于任何模块的工具类或辅助函数。这些工具类或函数为整个应用程序或多个模块提供便利的功能支持,使得代码更加模块化、易于维护和重用。Utils目录可能包含以下类型的文件或类:

  1. 辅助类(Helper Classes):提供通用方法,如日期时间处理、字符串操作、文件处理等。
  2. 自定义异常(Custom Exceptions):用于定义项目中特定的异常处理。
  3. 配置管理(Configuration Management):处理应用程序设置和配置加载。
  4. 日志记录(Logging):提供日志记录和管理功能。
  5. 数据校验(Data Validation):包含用于校验数据有效性的工具。
  6. 加密解密(Encryption/Decryption):提供加密和解密服务的工具。
  7. 网络通信(Networking):包含处理网络请求和响应的实用工具。
  8. 数据库操作(Database Operations):提供数据库连接、查询构建等工具。
  9. 缓存处理(Caching):实现缓存机制的工具,用于提高应用性能。
  10. 第三方库封装(Wrapper for Third-party Libraries):为第三方库提供统一的接口或封装复杂操作。

Utils目录的设计目的在于避免代码重复,并确保在整个项目中以一致的方式处理共通任务。这样做可以提高开发效率,降低维护成本,并确保代码的整洁性和可读性。

if __name__ == "__main__":作用

这里的__name__是Python的一个内置变量,它代表了当前模块的名称。当模块被直接运行时,__name__的值会被设置为"__main__"。如果模块被导入到另一个模块中,__name__的值就会被设置为该模块的名称。

if __name__ == "__main__":的作用是,当这个模块被直接运行时,位于该判断语句下的代码(通常是main()函数)会被执行。如果这个模块被导入到另一个模块中,main()函数则不会被执行。

这样做的好处是,你可以将模块中的功能代码和执行代码分离,使得这个模块既可以作为独立的脚本运行,也可以作为一个功能模块被其他脚本导入和使用

def main():print("This is the main function.")def helper_function():print("This is a helper function.")if __name__ == "__main__":main()

在这个例子中,如果这个脚本被直接运行,它会打印出"This is the main function."。如果这个脚本被导入到另一个脚本中,helper_function()可以被调用,但main()不会自动执行。

细节用法

def _format_long_term_memory(task_description: str, memory: BaseChatMemory) -> str:return memory.load_memory_variables({"prompt": task_description})["history"]

返回类型注解(Return Type Annotation)

  • -> str 表示函数的返回值应该是一个字符串类型。

类型注解(Type Annotations)

  • task_description: str 表示参数 task_description 应该是一个字符串类型
  • memory: BaseChatMemory 表示参数 memory 应该是一个 BaseChatMemory 类型的实例。BaseChat
  • Memory 可能是一个自定义的类,用于表示聊天记忆或对话历史。
    @abstractmethoddef load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:"""Return key-value pairs given the text input to the chain."""

抽象方法(Abstract Method)

  • @abstractmethod 是一个装饰器,它用于标记一个方法为抽象方法。这意味着这个方法在抽象类中不需要实现具体的功能,但它要求任何继承了这个抽象类的具体子类都必须实现这个方法。

参数和类型注解(Parameters and Type Annotations)

  • self 是一个特殊的参数,它代表类实例本身。在 Python 的类方法中,self 用來访问属于类的属性和方法。
  • inputs: Dict[str, Any] 表示参数 inputs 应该是一个字典,其中键是字符串类型,值可以是任何类型(Any)。

返回类型注解(Return Type Annotation)

  • -> Dict[str, Any] 表示方法的返回值应该是一个字典,其中键是字符串类型,值可以是任何类型(Any)。
  • 它提供了方法的简要描述。文档字符串通常用于解释方法或函数的用途、参数和返回值。

文档字符串(Docstring):

"""Return key-value pairs given the text input to the chain.""" 是一个文档字符串,它提供了方法的简要描述。文档字符串通常用于解释方法或函数的用途、参数和返回值。

langchain

定义提示模板

需要培养一种,问题挖空的能力,比如需要构建一个分析词语词性的提示词

 你是一名语言学家,请你分析{XXX词}的词性。

from langchain.prompts import PromptTemplateprompt = PromptTemplate(input_variables=["product"],template="What is a good name for a company that makes {product}?",
)print(prompt.format(product="colorful socks"))
What is a good name for a company that makes colorful socks?

链: 在多步骤的工作流中组合 LLM 和提示

最核心的链类型是 LLMChain,它由 PromptTemplate 和 LLM 组成。

扩展前面的示例,我们可以构造一个LLMChain.

它接受用户输入,使用 PromptTemplate 对其进行格式化,然后将格式化后的响应传递给LLM

from langchain.prompts import PromptTemplate
from langchain.llms import OpenAIllm = OpenAI(temperature=0.9)
prompt = PromptTemplate(input_variables=["product"],template="What is a good name for a company that makes {product}?",
)from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)chain.run("colorful socks")
# -> '\n\nSocktastic!'

我们可以通过将多个链组合在一起,或者通过将链与其他组件组合在一起,来构建更复杂的链

调用链的不同方式

返回结果格式(输入,输出)

默认情况下,_ _ call _ _ 返回输入和输出键值。通过将 return _ only _ output 设置为True,可以将其配置为只返回输出键值。

向链中添加内存

Chain 支持将 BaseMemory 对象作为其内存参数,允许 Chain 对象跨多个调用持久存储数据。换句话说,它使 Chain 成为一个有状态对象。

from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemoryconversation = ConversationChain(llm=chat,memory=ConversationBufferMemory()
)conversation.run("Answer briefly. What are the first 3 colors of a rainbow?")
# -> The first three colors of a rainbow are red, orange, and yellow.
conversation.run("And the next 4?")
# -> The next four colors of a rainbow are green, blue, indigo, and violet.#'The next four colors of a rainbow are green, blue, indigo, and violet.'

聊天记录

缓冲记忆
现在我们展示如何在链中使用这个简单的概念。我们首先展示 ConversationBufferMemory,它只是 ChatMessageHistory 的一个包装器,用于提取变量中的消息。我们可以首先提取它作为一个字符串。from langchain.memory import ConversationBufferMemorymemory = ConversationBufferMemory()
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("whats up?")memory.load_memory_variables({}){'history': 'Human: hi!\nAI: whats up?'}我们还可以获取作为消息列表的历史记录memory = ConversationBufferMemory(return_messages=True)
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("whats up?")memory.load_memory_variables({}){'history': [HumanMessage(content='hi!', additional_kwargs={}),AIMessage(content='whats up?', additional_kwargs={})]}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Echarts 柱状图中每个柱状图如何自定义展示内容

文章目录 需求分析需求 分析 要自定义柱状图中每个柱子的展示内容,您可以通过设置 label 的 formatter 属性来实现。formatter 是一个回调函数,可以用来自定义 label 的显示内容。以下是一个示例代码,演示了如何实现这一点: <!DOCTYPE html> <html lang="e…

【quarks系列】基于Dockerfile构建native镜像

目录 Dockerfile构建代码测试 Dockerfile FROM quay.io/quarkus/ubi-quarkus-native-image:22.3-java11 AS buildWORKDIR /workspace COPY . .RUN ./mvnw -DskipTeststrue clean package -Dnative -U# Stage 2: Create the minimal runtime image FROM registry.access.redhat…

AWS的EC2之间ping不通,服务之间不通,怎么办

AWS启动的两个EC2实例&#xff0c;互相访问不了 修改安全组规则&#xff0c;添加ICMP 流量的入站规则 参考&#xff1a;AWS的EC2之间ping不通,服务之间不通,怎么办_aws ec2同一个区域的服务器-CSDN博客

RabbitMQ支持的消息模型

RabbitMQ基础RabbitMQ支持的消息模型 一、第一种模型(直连) 我们将用Java编写两个程序&#xff0c;发送单个消息的生成者和接收消息并打印出来的消费者。 在下图&#xff0c;“P”是生成者&#xff0c;“C”消费者。中间框是一个队列RabbitMQ保留的消息缓冲区 。 首先构建一个…

思维,1209G1 - Into Blocks (easy version)

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1209G1 - Codeforces 二、解题报告 1、思路分析 考虑&#xff1a; 最终状态为若干段相同数字&#xff0c;且任意两段数字不同 每个数字出现的最左下标和最右下标构成一个区间 连锁反应—…

算法金 | 10 大必知的自动化机器学习库(Python)

大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 一、入门级自动化机器学习库 1.1 Auto-Sklearn 简介&#xff1a; Auto-Sklearn 是一个自动机器学习库&#xff0c;基于 Python 的 scikit…

【网络编程开发】4.socket套接字及TCP的实现框架 5.TCP多进程并发

4.socket套接字及TCP的实现框架 Socket套接字 Socket套接字是网络编程中用于实现不同计算机之间通信的一个基本构建块。 在现代计算机网络中&#xff0c;Socket套接字扮演着至关重要的角色。它们为应用程序提供了一种方式&#xff0c;通过这种方式&#xff0c;程序能够通过网…

2024年城市建设与环境管理国际会议(ICUCEM 2024)

2024 International Conference on Urban Construction and Environmental Management 【1】大会信息 大会地点&#xff1a;中国成都 投稿邮箱&#xff1a;icucemsub-paper.com 【2】会议简介 2024年城市建设与环境管理国际会议是一个专注于探讨城市建设与环境管理前沿议题…

EasyRecovery2024终极破解指南来袭!

在数字化时代&#xff0c;数据成为了每个人、每家公司最宝贵的资产之一。无论是个人的照片、文档&#xff0c;还是公司的机密信息&#xff0c;一旦丢失&#xff0c;后果不堪设想。因此&#xff0c;数据恢复工具如EasyRecovery2024应运而生&#xff0c;成为了保护数据安全的利器…

kubeedge v1.17.0部署教程

文章目录 前言一、安装k8s平台二、部署kubeedge1.部署MetalLB(可选)2.cloud3.edge4. 部署nginx到edge端 总结参考 前言 本文主要介绍kubeedge v1.17.0的安装过程 主要环境如下表 应用版本centos7.0k8s1.28.2kubeedge1.17.0docker24.0.8centos7.0 一、安装k8s平台 本文主要参…

Doris Connector 结合 Flink CDC 实现 MySQL 分库分表

1. 概述 在实际业务系统中为了解决单表数据量大带来的各种问题&#xff0c;我们通常采用分库分表的方式对库表进行拆分&#xff0c;以达到提高系统的吞吐量。 但是这样给后面数据分析带来了麻烦&#xff0c;这个时候我们通常试将业务数据库的分库分表同步到数据仓库时&#x…

英伟达Docker 安装与GPu镜像拉取

获取nvidia_docker压缩包nvidia_docker.tgz将压缩包上传至服务器指定目录解压nvidia_docker.tgz压缩包 tar -zxvf 压缩包执行rpm安装命令&#xff1a; #查看指定rpm包安装情况 rpm -qa | grep libstdc #查看指定rpm包下的依赖包的版本情况 strings /lib64/libstdc |grep GLI…

【代码随想录】【算法训练营】【第25天】 [216]组合总和III [17] 电话号码的字母组合

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 25&#xff0c;周六&#xff0c;坚持有点困难~ 题目详情 [216] 组合总和III 题目描述 216 组合总和III 解题思路 前提&#xff1a;组合子集问题 思路&#xff1a;回溯算法&#xff0c;剪枝…

347. 前 K 个高频元素

题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 示例 2: 输入: nums [1], k 1 输出: [1] 提示&#xff1a; 1 < nums.length < 1…

基于聚类与统计检验深度挖掘电商用户行为

1.项目背景 在当今竞争激烈的电商市场中,了解用户的行为和需求对于制定成功的市场策略至关重要,本项目通过建立RFM模型、K-Means聚类模型,将1000个用户进行划分,针对不同类的用户,提出不同的营销策略,最后通过统计检验来探究影响用户消费行为的因素和影响用户上网行为的…

DBeaver连接Oracle报错:ORA-12514

Listener refused the connection with the following error:ORA-12514, TNS:listener does not currently know of service requested inconnect descriptor ———————————————— 1.报错信息2.配置正确结语 ———————————————— 如果是第一次连接Or…

Spring 使用SSE(Server-Sent Events)学习

什么是SSE SSE 即服务器发送事件&#xff08;Server-Sent Events&#xff09;&#xff0c;是一种服务器推送技术&#xff0c;允许服务器在客户端建立连接后&#xff0c;主动向客户端推送数据。 SSE 基于 HTTP 协议&#xff0c;使用简单&#xff0c;具有轻量级、实时性和断线重…

Go微服务: 基于rocketmq:5.2.0搭建RocketMQ环境,以及示例参考

概述 参考最新官方文档&#xff1a;https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose以及&#xff1a;https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard综合以上两个文档来搭建环境 搭建RocketMQ环境 1 ) 基于 docker-c…

速通数据挖掘课程

速通 数据挖掘课程 大的分类 标签预测&#xff08;分类&#xff09; 和 数值预测&#xff08;预测呀&#xff09; 监督 非监督 是否 需要预先训练模型 然后预测 聚类&#xff1a;拿一个比一个&#xff0c;看看相似否&#xff0c;然后归一类 数据四种类型 数据属性有四种&…

simplicity studio 5 修改设备电压

工装板的soc额定输入电压为1.5v&#xff0c;而常态下ttl高电平为5v/3.3v&#xff0c;所以需要设定烧录程序时的设备电压。 确保连接设备&#xff0c;并且被识别。 进入管理员模式。 烧录.hex文件快捷方法。