🚀 提示工程
提示工程(Prompt Engineering)是生成式 AI 时代的一项关键技能,这是一门设计有效指令来引导语言模型生成期望输出的艺术与科学。据 DataCamp 报道,这一新兴学科涉及设计和优化提示,以从 AI 模型(特别是大语言模型 LLMs)中获得特定响应,塑造了我们与人工智能互动和利用其力量的方式。
📚 仓库结构
文件名称 | 描述 |
---|---|
基础提示设计 | 基础提示工程概念和结构的介绍。 |
高级提示设计 | 高级提示优化与结构化输出的技巧。 |
高级提示设计实操 | 应用高级提示设计技巧的实用指南。 |
理解 OpenAI API | 关于使用 OpenAI API 进行提示的概述。 |
LLM 中的函数调用 | 展示语言模型中函数调用功能的 Notebook。 |
综合提示工程 Notebook | 涵盖多种提示设计技巧的 Jupyter Notebook。 |
🎯 提示设计简介
提示设计(Prompting)是为 AI 模型提供特定指令或输入以引发期望输出或行为的过程。它是人类与 AI 系统之间的重要接口,允许用户有效地引导模型的响应。在大语言模型(LLMs)环境中,提示可以从简单查询扩展到复杂的指令集,包括上下文和风格指导。
提示设计的关键方面包括:
- 多功能性:根据 AI 模型和任务,提示可以是文本、视觉或听觉形式
- 特异性:精心设计的提示提供精确细节以生成更准确和相关的输出
- 迭代优化:提示设计通常涉及解释模型的响应并调整后续提示以获得更好的结果
- 应用多样性:提示被用于文本生成、图像识别、数据分析和对话式 AI 等各个领域
🌟 提示工程的重要性
- 提升 AI 性能:精心设计的提示词可以显著提高 AI 生成输出的质量和相关性。通过提供清晰的指令和上下文,提示工程使模型能够生成更准确、连贯和有用的响应。
- 定制化和灵活性:提示工程允许用户根据特定需求和领域调整 AI 的响应,而无需广泛的模型再训练。这种灵活性使 AI 系统能够更好地适应各种行业的多样化应用。
- 偏差缓解:通过精心设计提示词,可以引导模型考虑多种视角或专注于特定的无偏信息来源,从而减少 AI 输出中的偏差。
- 改善用户体验:有效的提示工程通过弥合人类意图和机器理解之间的差距,提高用户体验,使 AI 工具更易于访问和用户友好 [4]。
- 成本效率:优化提示词可以更高效地利用计算资源,减少对更大、更昂贵模型的需求,以实现预期结果。
- 快速原型和迭代:提示工程支持快速实验和 AI 应用的优化,加速开发周期和创新。
- 道德考量:周到的提示设计有助于确保 AI 系统遵循道德准则,并为不同的上下文和受众生成适当的内容。
- 可扩展性:一旦开发出有效的提示词,它们可以轻松在整个组织中扩展,从而实现一致且高质量的 AI 交互。
- 跨学科应用:提示工程连接技术和领域专业知识,使主题专家无需深入的技术知识即可利用 AI 能力。
提示工程技术
- 提示工程简介:对提示工程概念的基础性概述,包括基本原则、结构化提示、对比分析和问题解决应用。
- 基本提示结构:探索单轮和多轮提示,展示如何创建简单提示并与 AI 模型进行对话。
- 提示模板和变量:介绍提示中模板和变量的使用,重点是通过工具如 Jinja2 创建灵活和可重用的提示结构。
- 零样本提示:展示如何在没有具体示例的情况下,通过直接任务指定和基于角色的提示技术指导 AI 模型完成任务。
- 少样本学习和上下文学习:涵盖通过提供少量示例引导 AI 响应的技术,在无需微调的情况下提升特定任务的性能。
- 连锁思维 (CoT) 提示:鼓励 AI 模型将复杂问题分解为逐步推理过程,从而提高问题解决能力。
- 自洽性和多路径推理:探索生成多样化推理路径并汇总结果的方法,以提高 AI 输出的准确性和可靠性。
- 受限和引导式生成:专注于为模型输出设置约束并实施基于规则的生成,以控制和引导 AI 的响应。
- 角色提示:展示如何为 AI 模型分配特定角色并设计有效的角色描述,以引出所需的行为或专业知识。
- 任务分解提示:探索在提示中将复杂任务分解为更小的、可管理的子任务的技术。
- 提示链和序列:展示如何以逻辑流程连接多个提示,以处理复杂的多步骤任务。
- 指令工程:专注于为语言模型设计清晰有效的指令,平衡具体性和通用性以优化性能。
- 提示优化技术:涵盖改进提示的高级方法,包括 A/B 测试和基于性能指标的迭代优化。
- 处理模糊性并提高清晰度:探讨识别和解决模糊提示的技术,以及撰写更清晰、更有效提示的策略。
- 提示长度和复杂性管理:探索管理长提示或复杂提示的策略,包括分块和摘要技术。
- 负向提示和避免不期望的输出:展示如何使用负面示例和约束引导模型远离不想要的响应。
- 提示格式和结构:研究优化 AI 模型响应的各种提示格式和结构元素。
- 针对特定任务的提示:专注于为摘要、问答、代码生成和创意写作等特定任务设计提示。
- 多语言和跨语言提示:探索在多个语言间有效工作的提示设计技术,以及翻译任务的提示设计。
- 提示工程中的伦理考量:关注避免偏见和创建包容性提示的伦理维度。
- 提示安全性和安全措施:涵盖防止提示注入和实施内容过滤的技术,以确保 AI 应用的安全性。
- 提示有效性评估:探索评估和衡量提示有效性的方法,包括手动和自动评估技术。
基本提示技巧
提示工程包括一系列旨在优化与 AI 模型交互的技术。这些基本方法构成了更高级策略的基础,是任何希望充分利用生成式 AI 工具潜力的人必备的技能。
零样本提示是最简单的技术,即直接向 AI 提出指令或问题,而无需额外的上下文或示例[1][2]。这种方法适用于简单的任务或快速获取答案。例如,询问“法国的首都是哪里?”就是一个零样本提示。
单样本提示在零样本提示的基础上增加了一个示例,以指导 AI 的响应[3]。这种技术在处理特定格式或风格时特别有用。例如,为生成产品描述,可以先提供一个描述示例,然后要求生成另一个不同产品的描述。
少样本提示进一步扩展了这一概念,向 AI 提供多个示例[2]。此方法对于复杂任务或需要输出一致性时尤为有效。通过提供多个期望输出格式或风格的示例,AI 可以更好地理解和复制模式。
基于角色的提示通过为 AI 分配特定的角色或身份,显著影响其响应的语气和内容[1]。例如,在提问前指示 AI“扮演技术支持专家”,可以得到更具技术性和支持性的回答。
提示重构是一种通过重新措辞或重组提示来引导 AI 提供不同视角或更细致回答的技术[3]。当初始结果不满意或需要探索主题的多个方面时,这种方法尤其有用。例如,与其问“可再生能源的好处是什么?”,不如重构为“可再生能源如何影响经济的不同部门?”
提示组合将多个指令或问题合并为一个综合提示[3]。这种技术对于获取多方面的回答或处理复杂问题非常有价值。例如,将“解释共享主机与 VPS 主机之间的区别”和“推荐哪种更适合小型电商网站”合并为一个提示,可以得到更全面和定制的响应。
这些基本技术为有效的提示工程提供了坚实的基础,使用户能够在广泛的应用中引导 AI 模型生成更准确、相关和有用的输出。
高级提示策略
高级提示工程技术利用更复杂的方法来提升大语言模型的性能和能力。这些方法超越了基本提示,旨在实现更复杂的推理和任务特定的成果。
连贯思维(CoT)提示
此技术通过提供一系列中间推理阶段来提高模型在复杂推理任务中的表现。连贯思维提示使语言模型能够将复杂问题分解为更小、更易管理的步骤,从而生成更准确和逻辑性的输出。
自洽性
作为 CoT 的增强,自洽性方法包括采样多种推理路径并选择最一致的答案。这种方法在存在多种有效解决方法的问题中特别有效,因为它允许模型在确定最可靠的结果之前探索多种推理策略。
ReAct
ReAct 技术结合了推理和行动,模型同时生成推理过程和任务特定的操作。这种方法使 AI 能够动态地计划、执行并调整其方法,非常适合需要与外部信息源交互的复杂问题解决场景。
多模态提示工程
此高级技术涉及设计包含多种输入类型的提示,例如文本、图像和音频。通过利用多样化的数据类型,多模态提示使 AI 交互更全面和上下文相关,模仿人类的感知和沟通能力。
实时提示优化
这一新兴技术提供了对提示有效性的即时反馈,评估提示的清晰度、潜在偏见和与期望结果的对齐程度。这样的实时指导简化了提示编写的过程,适用于新手和有经验的用户。
主动提示
这种动态方法允许根据用户的交互和反馈调整提示。主动提示使 AI 模型能够实时适应其响应,从而在整个交互过程中提高输出的相关性和有效性。
知识生成提示
此技术利用语言模型在回答问题前生成相关知识,增强其常识推理能力。通过先生成相关信息再将其融入回答,模型可以提供更有见地和上下文的回应。
这些高级技术代表了提示工程的前沿,为优化 AI 性能在广泛的应用领域和问题领域中提供了强大的工具。
连贯思维
连贯思维(CoT)推理是一种先进的提示工程技术,旨在增强大语言模型的推理能力。此方法涉及为给定问题生成多种推理路径,并选择最一致或全面的解决方案。通过执行多次 CoT 推理,提示工程师可以提升模型解决需要逻辑思考和多步骤问题的能力。
CoT 推理的关键要点
- 自洽解码:选择多次推理中最常见的结论。
- 基于复杂性的提示:选择推理链最长的结果。
- 人工干预:在推理结果显著不一致时,借助人工修正推理链。
- 提升准确性:提高模型在涉及推理、计算和决策任务中的表现。
通过利用 CoT 推理,提示工程师可以创建更加稳健和可靠的 AI 系统,能够在各个领域处理复杂问题。
ReAct 提示法示例
ReAct(Reasoning and Acting)提示法是一种高级技术,它结合了推理过程和特定任务的行动来增强大语言模型(LLMs)的问题解决能力。这种方法使得 LLMs 能够交替生成语言推理步骤和执行操作,从而实现更高效和动态的问题解决。
一个典型的 ReAct 提示
- 思考(Thought):模型的推理过程。
- 行动(Action):需要执行的具体任务或查询。
- 观察(Observation):从行动中获得的结果或信息。
示例
问题:埃菲尔铁塔所在国家的首都是哪里?
- 思考:要回答这个问题,我需要找出埃菲尔铁塔所在的地点,然后确定该国家的首都。
- 行动:搜索“埃菲尔铁塔的位置”。
- 观察:埃菲尔铁塔位于法国巴黎。
- 思考:现在我知道埃菲尔铁塔在法国,我需要查找法国的首都。
- 行动:搜索“法国的首都”。
- 观察:法国的首都是巴黎。
- 思考:我已获得回答这个问题所需的全部信息。
- 行动:提供答案。
- 答案:埃菲尔铁塔所在国家的首都是法国巴黎。
ReAct 提示法的应用
- 问答:增强模型分解复杂问题和获取相关信息的能力。
- 任务自动化:通过结合推理和行动,引导模型完成多步骤流程。
- 与外部知识库交互:使模型能够检索并结合额外信息支持其推理。
- 决策制定:提高模型评估选项并基于可用数据做出明智选择的能力。
通过实施 ReAct 提示法,开发者和研究人员可以创建更强大且适应性更强的 AI 系统,从而胜任复杂的推理任务和现实问题解决场景。
定向刺激提示法
定向刺激提示法(Directional Stimulus Prompting,DSP)是一种创新框架,用于引导大语言模型(LLMs)生成特定的预期输出。该技术利用一个小型、可调节的策略模型,为每个输入实例生成辅助的定向刺激提示,作为细致的提示,引导 LLMs 生成期望的结果。
DSP 的关键特点
- 利用小型、可调节的策略模型(如 T5)生成定向刺激。
- 通过监督微调和强化学习进行优化。
- 可应用于多种任务,包括摘要生成、对话回复生成和链式推理。
- 在有限标注数据下显著提升性能,例如在仅使用 80 条对话的情况下,将 ChatGPT 在 MultiWOZ 数据集上的表现提升了 41.4%。
通过使用 DSP,研究人员和从业者可以在不直接修改 LLM 参数的情况下增强其能力,提供一种灵活且高效的提示工程方法。
知识生成提示法
知识生成提示法(Generated Knowledge Prompting)通过先要求模型生成相关事实,然后再回答问题或完成任务,从而提升 AI 模型的性能。这种两步流程包括知识生成(模型生成相关信息)和知识整合(利用这些信息形成更准确且具有上下文的回答)。
主要优势
- 提高 AI 生成内容的准确性和可靠性。
- 增强对给定主题的上下文理解。
- 能够将回答锚定在事实信息上。
- 可以结合 API 或数据库等外部来源进一步扩展知识。
通过提示模型首先考虑相关事实,知识生成提示法有助于创建更具信息量和合理性的输出,尤其适用于复杂任务或处理专业主题时。
提示工程技术实操
本提示工程技术指南完全基于 NirDiamant 提供的出色实践资源库。所有内容及 Jupyter notebook 的版权归属于原始资源库:Prompt Engineering。
我在这里添加这一内容是因为它是一个很棒的学习资源,完整版权归属 Prompt Engineering 仓库。
🌱 基础概念
- 提示工程简介
概述 🔎
详细介绍 AI 和语言模型提示工程的基础概念。
实现 🛠️
结合理论解释与实践演示,涵盖基础概念、结构化提示、比较分析以及解决问题的应用。
- 基础提示结构
概述 🔎
探讨两种基础提示结构:单轮提示和多轮提示(对话)。
实现 🛠️
使用 OpenAI 的 GPT 模型和 LangChain 演示单轮和多轮提示、提示模板以及对话链。
- 提示模板与变量
概述 🔎
介绍如何使用 Python 和 Jinja2 模板引擎创建和使用带变量的提示模板。
实现 🛠️
涉及模板创建、变量插入、条件内容、列表处理以及与 OpenAI API 的集成。
🔧 核心技术
- 零样本提示
概述 🔎
探讨零样本提示,使语言模型在无具体示例或事先训练的情况下完成任务。
实现 🛠️
演示直接任务指定、基于角色的提示、格式规范以及使用 OpenAI 和 LangChain 的多步推理。
- 少样本学习与上下文学习
概述 🔎
通过 OpenAI 的 GPT 模型和 LangChain 库探索少样本学习和上下文学习技术。
实现 🛠️
实现基本和高级少样本学习、上下文学习以及示例选择与评估的最佳实践。
- 链式思维 (CoT) 提示
概述 🔎
介绍链式思维 (CoT) 提示,引导 AI 模型将复杂问题分解为逐步推理过程。
实现 🛠️
涵盖基本和高级 CoT 技术,将其应用于各种问题解决场景,并与标准提示进行比较。
🔍 高级策略
- 自一致性与多路径推理
概述 🔎
探讨生成多样化推理路径并聚合结果以提高 AI 生成的答案质量的技术。
实现 🛠️
演示设计多样化推理提示、生成多个响应、实现聚合方法以及应用自一致性检查。
- 受限与引导生成
概述 🔎
聚焦为模型输出设置约束和实现基于规则的生成的技术。
实现 🛠️
使用 LangChain 的 PromptTemplate 创建结构化提示,实施约束并探索基于规则的生成技术。
- 角色提示
概述 🔎
探讨为 AI 模型分配特定角色并设计有效角色描述的技术。
实现 🛠️
演示创建基于角色的提示,为 AI 模型分配角色以及优化角色描述以适应各种场景。
🚀 高级实现
- 任务分解提示
概述 🔎
探讨分解复杂任务并在提示中链接子任务的技术。
实现 🛠️
涉及问题分析、子任务定义、目标提示工程、顺序执行以及结果综合。
- 提示链与序列化
概述 🔎
演示如何连接多个提示并为复杂的 AI 驱动任务构建逻辑流程。
实现 🛠️
探索基本提示链、顺序提示、动态提示生成以及提示链中的错误处理。
- 指令工程
概述 🔎
聚焦于为语言模型设计清晰有效的指令,平衡具体性与通用性。
实现 🛠️
涉及创建和优化指令、尝试不同结构以及基于模型响应进行迭代改进。
🎨 优化与改进
- 提示优化技术
概述 🔎
探讨优化提示的高级技术,重点关注 A/B 测试和迭代改进。
实现 🛠️
演示提示的 A/B 测试、迭代改进流程,以及使用相关指标进行性能评估。
- 处理歧义并提高清晰度
概述 🔎
重点介绍识别和解决含糊不清的提示以及编写更清晰提示的技术。
实现 🛠️
包括分析模糊提示、实施解决歧义的策略,以及探索编写更清晰提示的技巧。
- 提示长度与复杂性管理
概述 🔎
探讨在使用大语言模型时管理提示长度和复杂性的技术。
实现 🛠️
演示在细节与简洁性之间平衡的技术,以及处理长上下文的策略,包括分块、摘要和迭代处理。
🛠️ 专门应用
- 负面提示与避免不期望输出
概述 🔎
探讨负面提示及避免大语言模型产生不期望输出的技术。
实现 🛠️
包括基础负面示例、明确排除项、使用 LangChain 实现约束,以及评估和改进负面提示的方法。
- 提示格式化与结构
概述 🔎
探讨各种提示格式和结构元素,并展示它们对 AI 模型响应的影响。
实现 🛠️
演示创建多种提示格式,整合结构元素,以及比较不同提示结构的响应。
- 特定任务的提示
概述 🔎
探讨为特定任务(如文本摘要、问答、代码生成和创意写作)创建和使用提示。
实现 🛠️
包括设计任务特定的提示模板,使用 LangChain 实现,结合示例输入执行,并分析各任务类型的输出。
🌍 高级应用
- 多语言和跨语言提示
概述 🔎
探讨为多语言及语言翻译任务设计有效提示的技术。
实现 🛠️
包括创建多语言提示,实施语言检测和适配,设计跨语言翻译提示,以及处理各种书写系统和字符集。
- 提示工程中的伦理考量
概述 🔎
探讨提示工程的伦理维度,重点关注避免偏见以及创建包容性和公平性的提示。
实现 🛠️
包括识别提示中的偏见、实施创建包容性提示的策略,以及评估和改进 AI 输出伦理质量的方法。
- 提示安全与安全性
概述 🔎
重点介绍如何防止提示注入,并在提示中实现内容过滤以确保 AI 应用的安全性。
实现 🛠️
包括防止提示注入的技术、内容过滤实现,以及测试安全性措施的有效性。
- 评估提示的有效性
概述 🔎
探讨评估 AI 语言模型提示有效性的方法和技术。
了解大语言模型 (LLM) API
让我们来讨论大语言模型 (LLM) API。
有几种方法可以使用该 API。一种是直接发送 HTTP 请求,另一种是通过 pip 安装官方的 OpenAI 包,它始终与最新功能保持同步。
pip install openai
由于这种 API 格式非常流行,许多其他提供商也提供了相同格式的 API。这种格式被称为“OpenAI 兼容”。
提供 OpenAI 兼容 API 的供应商列表
以下是与 OpenAI API 兼容的供应商列表,开发者可以以类似于 OpenAI 提供的方式利用这些服务:
- Groq
- Groq 提供的 API 大多兼容 OpenAI 的客户端库。用户只需更改
base_url
并使用 Groq 的 API 密钥即可配置其应用程序在 Groq 上运行。
- Groq 提供的 API 大多兼容 OpenAI 的客户端库。用户只需更改
- Mistral AI
- Mistral 提供支持 OpenAI 兼容请求的 API。开发者可以通过此服务访问各种模型。
- Hugging Face
- Hugging Face 提供通过 API 访问众多模型的功能,其配置方式类似于 OpenAI 的 API。Hugging Face 以其庞大的模型库而闻名。
- Google Vertex AI
- Google Vertex AI 允许用户以与 OpenAI API 一致的方式与大语言模型交互。
- Microsoft Azure OpenAI
- Microsoft 通过其 Azure 平台提供 OpenAI 模型访问,便于与现有 Azure 服务集成。
- Anthropic
- Anthropic 的模型也可通过模仿 OpenAI 结构的 API 访问,从而实现类似的交互。
这些提供商使开发者能够利用不同的 AI 功能,同时保持与熟悉的 OpenAI API 结构的兼容性,从而更容易集成到应用程序和工作流程中。
还有一些提供商使用不同的 API 架构和类型,但我们可以使用像 litellm 这样的客户端库,为不同类型的大语言模型提供统一的客户端包。
此外,像 Portkey 这样的网关为任何大语言模型提供 OpenAI 兼容的 API。
在本文中,您将学习 API 中的不同参数。
关键参数
Temperature
- 描述: Temperature 参数控制模型输出的随机性,范围从 0 到 2。
- 影响:
- 低值 (0-0.3): 输出更具确定性和专注性,通常会重复类似的响应。
- 中等值 (0.4-0.7): 在创造性和连贯性之间取得平衡。
- 高值 (0.8-2): 生成更多样化和创造性的输出,但可能会产生无意义的结果。
- 示例:
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "完成句子:'幸福的关键是'。"}], temperature=1 )
Top_p
- 描述: 此参数实现核采样 (nucleus sampling),模型只考虑最高
p
概率质量的输出。 - 范围: 从 0 到 1,较低的值限制输出更可能的 Token。
- 示例:
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "写一首诗。"}], top_p=0.9 )
Max Tokens
- 描述: 定义生成响应中的最大 Token 数量(单词或单词的一部分)。
- 默认值: 对于大多数模型,通常最大设置为 4096 个 Token。
- 示例:
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "讲一个故事。"}], max_tokens=150 )
Function Calling
- 描述: 此功能允许模型根据用户输入调用预定义函数,从而实现与外部 API 或服务的交互。
- 示例:
functions = [ { "name": "get_current_weather", "description": "获取某地的当前天气。", "parameters": { "type": "object", "properties": { "location": {"type": "string"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]} }, "required": ["location"] } } ] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "纽约的天气如何?"}], functions=functions, function_call={"name": "get_current_weather"} )
API 调用中的角色
理解 API 调用中涉及的角色有助于有效地构建交互结构。
系统角色
- 目的:提供高层次的指令或上下文,指导模型在整个对话中的行为。
- 用法:在消息数组的开头设置,以建立交互的语气或规则。
- 示例:
messages = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What can you do?"} ]
用户角色
- 目的:代表人类用户的输入,通过查询或提示引导对话。
- 用法:最常用于交互中,用于提出问题或提供陈述。
- 示例:
{"role": "user", "content": "Can you explain how OpenAI works?"}
助手角色
- 目的:代表模型基于用户输入和系统指令生成的响应。
- 用法:当回复用户查询时,模型会自动假定为此角色。
- 示例:
{"role": "assistant", "content": "OpenAI uses advanced machine learning techniques to generate text."}
其他参数
Stream
- 描述:如果设置为 true,则允许在生成部分响应时进行流式传输,适用于实时应用。
Logprobs
- 描述:返回 Token 预测的对数概率,用于理解模型行为和改进输出。
总结
OpenAI API 提供了一组强大的参数和角色,开发者可以利用它们创建高度互动的应用程序。通过调整诸如 temperature 的参数并有效地利用结构化角色,用户可以根据特定需求定制响应,同时确保对话的清晰度和控制力。
以下是如何使用与 OpenAI 兼容的各种提供商的 API 的示例,以及轻量级大语言模型 (LLM) 的应用实例。
使用兼容提供商的 OpenAI API 示例
1. Groq
要使用 Groq 的 API,需要设置基本 URL 并提供 Groq API 密钥。
import os
import openai
client = openai.OpenAI(
base_url="https://api.groq.com/openai/v1",
api_key=os.environ.get("GROQ_API_KEY")
)
response = client.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Tell me a joke."}]
)
print(response.choices[0].message['content'])
2. Mistral AI
Mistral AI 同样提供 OpenAI 兼容的 API。以下是使用方法:
import requests
url = "https://api.mistral.ai/v1/chat/completions"
headers = {
"Authorization": f"Bearer {os.environ.get('MISTRAL_API_KEY')}",
"Content-Type": "application/json"
}
data = {
"model": "mistral-7b",
"messages": [{"role": "user", "content": "What is the capital of France?"}]
}
response = requests.post(url, headers=headers, json=data)
print(response.json()['choices'][0]['message']['content'])
3. Hugging Face
使用 Hugging Face 的 API 需要访问令牌。以下是示例代码:
import requests
url = "https://api-inference.huggingface.co/models/gpt2"
headers = {
"Authorization": f"Bearer {os.environ.get('HUGGINGFACE_API_KEY')}"
}
data = {
"inputs": "Once upon a time in a land far away,"
}
response = requests.post(url, headers=headers, json=data)
print(response.json()[0]['generated_text'])
4. Google Vertex AI
与 Google Vertex AI 交互可使用以下代码:
from google.cloud import aiplatform
aiplatform.init(project='your-project-id', location='us-central1')
response = aiplatform.gapic.PredictionServiceClient().predict(
endpoint='projects/your-project-id/locations/us-central1/endpoints/your-endpoint-id',
instances=[{"content": "Who won the World Series in 2020?"}],
)
print(response.predictions)
5. Microsoft Azure OpenAI
以下是调用 Azure 的 OpenAI 服务的代码示例:
import requests
url = f"https://your-resource-name.openai.azure.com/openai/deployments/your-deployment-name/chat/completions?api-version=2023-05-15"
headers = {
"Content-Type": "application/json",
"api-key": os.environ.get("AZURE_OPENAI_API_KEY")
}
data = {
"messages": [{"role": "user", "content": "What's the weather today?"}],
"model": "gpt-35-turbo"
}
response = requests.post(url, headers=headers, json=data)
print(response.json()['choices'][0]['message']['content'])
6. Anthropic
使用 Anthropic 的 Claude 模型及其 API 的示例代码如下:
import requests
url = "https://api.anthropic.com/v1/complete"
headers = {
"Authorization": f"Bearer {os.environ.get('ANTHROPIC_API_KEY')}",
"Content-Type": "application/json"
}
data = {
"model": "claude-v1",
"prompt": "Explain quantum physics in simple terms.",
}
response = requests.post(url, headers=headers, json=data)
print(response.json()['completion'])
该示例展示了如何有效利用轻量级模型,同时在文本生成任务中实现有意义的输出。
来源:
https://www.coltsteele.com/tips/understanding-openai-s-temperature-parameter
https://community.make.com/t/what-is-the-difference-between-system-user-and-assistant-roles-in-chatgpt/36160
https://arize.com/blog-course/mastering-openai-api-tips-and-tricks/
https://learn.microsoft.com/ko-kr/Azure/ai-services/openai/reference
https://community.openai.com/t/the-system-role-how-it-influences-the-chat-behavior/87353
https://community.openai.com/t/understanding-role-management-in-openais-api-two-methods-compared/253289
https://platform.openai.com/docs/advanced-usage
https://platform.openai.com/docs/api-reference
https://console.groq.com/docs/openai
https://docs.jabref.org/ai/ai-providers-and-api-keys
https://www.reddit.com/r/LocalLLaMA/comments/16csz5n/best_openai_api_compatible_application_server/
https://docs.gptscript.ai/alternative-model-providers
https://towardsdatascience.com/how-to-build-an-openai-compatible-api-87c8edea2f06?gi=5537ceb80847
https://modelfusion.dev/integration/model-provider/openaicompatible/
https://docs.jabref.org/ai/ai-providers-and-api-keys
https://docs.gptscript.ai/alternative-model-providers
https://console.groq.com/docs/openai
提示工程入门 II(函数调用)
以下是加载必要的库、工具和配置。
https://colab.research.google.com/github/adithya-s-k/AI-Engineering.academy/blob/main/PromptEngineering/function_calling.ipynb
提示工程入门
以下是加载必要的库、工具和配置。
https://colab.research.google.com/github/adithya-s-k/AI-Engineering.academy/blob/main/PromptEngineering/prompt_engineering.ipynb