llm-universe 提示词工程 api开发 打卡笔记1 —— (datawhale)

2024-04-18 04:44

本文主要是介绍llm-universe 提示词工程 api开发 打卡笔记1 —— (datawhale),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

llm-universe 提示词工程 api开发 打卡笔记1 —— (datawhale)

项目目标

1.熟悉 LangChain,Rag等大模型开发开源知识,

2.了解llm开发的全部流程,独立开发个人的小助手。

环境配置

使用conda 独立分配一个环境

conda create -n llm-universe

conda activate llm-universe

cd 项目文件夹

pip install -r requirements.txt

llm应用开发

api参数设定

Temperature

对于不同的问题与应用场景,我们可能需要设置不同的 temperature。例如,在本次学习项目搭建的个人知识库助手项目中,我们一般将 temperature 设置为 0,从而保证助手对知识库内容的稳定使用,规避错误内容、模型幻觉;在产品智能客服、科研论文写作等场景中,我们同样更需要稳定性而不是创造性;但在个性化 AI、创意营销文案生成等场景中,我们就更需要创意性,从而更倾向于将 temperature 设置为较高的值。

system prompt

设置此参数相当于设置模型的默认设置。

{"system prompt": "你是一个幽默风趣的个人知识库助手,可以根据给定的知识库内容回答用户的提问,注意,你的回答风格应是幽默风趣的","user prompt": "我今天有什么事务?"
}

api调用示例

文心一言YB-chat,使用.env文件来存储

import qianfan
from dotenv import load_dotenv, find_dotenv# 读取本地/项目的环境变量。# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())
def gen_wenxin_messages(prompt):'''构造文心模型请求参数 messages请求参数:prompt: 对应的用户提示词'''messages = [{"role": "user", "content": prompt}]return messagesdef get_completion(prompt, model="Yi-34B-Chat", temperature=0.01):'''获取文心模型调用结果请求参数:prompt: 对应的提示词model: 调用的模型,默认为 ERNIE-Bot,也可以按需选择 ERNIE-Bot-4 等其他模型temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~1.0,且不能设置为 0。温度系数越低,输出内容越一致。'''chat_comp = qianfan.ChatCompletion()message = gen_wenxin_messages(prompt)resp = chat_comp.do(messages=message, model=model,temperature = temperature,system="你是一名个人助理-小鲸鱼")return resp["result"]
get_completion("请你告诉我该如何做prompt engineering")

返回值:

Prompt engineering 是一个相对较新的概念,它指的是设计或优化提示(prompts)以获得更好的模型输出。在自然语言处理(NLP)中,提示通常是指在训练语言模型时使用的输入文本,它们可以帮助模型理解并生成符合用户预期的响应。以下是一些提示工程的策略和技巧return:1. **明确性(Clarity)**:确保你的提示清晰明确,让模型知道你想要什么。避免歧义和模糊的表述。
2. **具体性(Specificity)**:尽量提供具体的上下文和细节,这样模型才能生成更准确和相关的回答。
3. **简洁性(Brevity)**:尽量保持提示简洁,避免冗长和无关的信息,这有助于模型专注于关键点。
4. **引导性(Directness)**:使用引导性的语言来指导模型生成你想要的输出。例如,使用“请”、“描述”、“解释”等词汇。
5. **反馈循环(Feedback Loop)**:不断迭代和优化你的提示,根据模型的输出调整提示,直到得到满意的结果。
6. **调试(Debugging)**:如果模型输出不符合预期,尝试找出问题所在,可能是提示设计不当,也可能是模型理解错误。
7. **多样化(Variety)**:对于同一个任务,尝试不同的提示,看看哪个效果最好。
8. **上下文敏感性(Context Sensitivity)**:如果你的提示需要考虑特定的背景或上下文,确保在提示中提供足够的背景信息。
9. **避免误导(Avoid Misleading)**:如果你的提示可能引导模型产生不准确或误导性的回答,尽量避免这种情况。
10. **测试和验证(Testing and Validation)**:对你的提示进行充分的测试,确保它们在实际应用中能够产生预期的结果。
11. **参考示例(Example Use)**:如果可能,提供示例或使用案例来帮助模型理解如何应用提示。
12. **适应性(Adaptability)**:根据模型的能力和限制调整提示,确保提示与模型的能力相匹配。
13. **多模态提示(Multimodal Prompts)**:对于支持多模态输入的模型,可以使用图像、声音或其他形式的数据来增强提示。
14. **伦理和敏感性(Ethics and Sensitivity)**:在处理敏感话题时,确保提示不会导致模型产生不适当或冒犯性的输出。Prompt engineering 是一个相对较新的概念,它指的是设计或优化提示(prompts)以获得更好的模型输出。在自然语言处理(NLP)中,提示通常是指在训练语言模型时使用的输入文本,它们可以帮助模型理解并生成符合用户预期的响应。提示工程是一个不断发展的领域,随着语言模型能力的增强和应用场景的扩大,提示工程师需要不断学习和创新。

提示词工程(prompt engineering)

好的提示词工程才能最大限度的发挥llm大脑的作用,高质量的提问往往才联系着高质量的回答,所以我们应该学习如何更好的写出提示词。以下的内容均基于datawhale提供的开源资料,这些是我认为在prompt-engineering中比较重要点,如果想要系统的学习prompt-engineering,请直接前往 动手学大模型应用开发 查看prompt engineering 章节

使用分隔符清晰地表示输入的不同部分

在编写 Prompt 时,我们可以使用各种标点符号作为“分隔符”,将不同的文本部分区分开来。分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用 ```,“”",< >, ,: 等做分隔符,只要能明确起到隔断作用即可。

寻求结构化的输出

有时候我们需要语言模型给我们一些结构化的输出,而不仅仅是连续的文本。什么是结构化输出呢?就是按照某种格式组织的内容,例如 JSON、HTML 等。这种输出非常适合在代码中进一步解析和处理,例如,您可以在 Python 中将其读入字典或列表中。

prompt = f"""请生成包括书名、作者和类别的三本虚构的、非真实存在的中文书籍清单,\并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。"""response = get_completion(prompt)print(response)

提供少量示例 few-shot learning

“Few-shot” prompting(少样本提示),即在要求模型执行实际任务之前,给模型提供一两个参考样例,让模型了解我们的要求和期望的输出样式。

prompt = f"""你的任务是以一致的风格回答问题(注意:文言文和白话的区别)。<学生>: 请教我何为耐心。<圣贤>: 天生我材必有用,千金散尽还复来。<学生>: 请教我何为坚持。<圣贤>: 故不积跬步,无以至千里;不积小流,无以成江海。骑骥一跃,不能十步;驽马十驾,功在不舍。<学生>: 请教我何为孝顺。"""response = get_completion(prompt)print(response)
<圣贤>: 孝顺者,孝敬父母,顺从长辈,尊重家族传统,忠诚孝道,不忘家国情怀。

给模型时间思考

我们应通过 Prompt 引导语言模型进行深入思考。可以要求其先列出对问题的各种看法,说明推理依据,然后再得出最终结论。在 Prompt 中添加逐步推理的要求,能让语言模型投入更多时间逻辑思维,输出结果也将更可靠准确。

示例:

text = f"""在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。\他们一边唱着欢乐的歌,一边往上爬,\然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。\虽然略有些摔伤,但他们还是回到了温馨的家中。\尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。"""prompt = f"""1-用一句话概括下面用<>括起来的文本。2-将摘要翻译成英语。3-在英语摘要中列出每个名称。4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。请使用以下格式:摘要:<摘要>翻译:<摘要的翻译>名称:<英语摘要中的名称列表>输出 JSON 格式:<带有 English_summary 和 num_names 的 JSON 格式>Text: <{text}>"""response = get_completion(prompt)print("response :")print(response)
response :摘要:在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水,不幸中途发生意外,但他们仍然充满冒险精神。翻译:In a charming village, siblings Jack and Jill set out to fetch water from a well on top of a hill, unfortunately encountering an accident along the way, but their adventurous spirit remains undiminished.名称:Jack, Jill

这篇关于llm-universe 提示词工程 api开发 打卡笔记1 —— (datawhale)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913787

相关文章

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

电脑提示Winmm.dll缺失怎么办? Winmm.dll文件丢失的多种修复技巧

《电脑提示Winmm.dll缺失怎么办?Winmm.dll文件丢失的多种修复技巧》有时电脑会出现无法启动程序,因为计算机中丢失winmm.dll的情况,其实,winmm.dll丢失是一个比较常见的问... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包