Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add some chinese document #513

Open
wants to merge 18 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ notebooks/.env
pages/research/local_research/
.DS_Store
.vscode
.vercel

# app
.next
Expand Down
2 changes: 1 addition & 1 deletion pages/_meta.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"prompts": "Prompt Hub",
"models": "模型",
"risks": "风险和误用",
"research": "LLM Research Findings",
"research": "主要研究方向",
"papers": "论文",
"tools": "工具和库",
"notebooks": "Prompt Engineering 笔记本",
Expand Down
10 changes: 7 additions & 3 deletions pages/applications/_meta.zh.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
{
"generating": "生成数据",
"coding": "Generating Code",
"generating": "数据生成",
"generating_textbooks": "解决生成数据集的多样性",
"coding": "代码生成",
"workplace_casestudy": "毕业生工作分类案例研究",
"pf": "提示函数"
"pf": "提示函数",
"context-caching": "使用 Gemini 1.5 Flash 进行上下文缓存",
"synthetic_rag": "使用 LLM 生成数据以训练新一代的 LLM / 检索器 / 其他模型",
"function_calling": "LLM 中自定义函数的调用"
}
46 changes: 46 additions & 0 deletions pages/applications/context-caching.zh.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 使用 Gemini 1.5 Flash 进行上下文缓存

import {Cards, Card} from 'nextra-theme-docs'
import {CodeIcon} from 'components/icons'

Google 最近发布了一个名为 [上下文缓存](https://ai.google.dev/gemini-api/docs/caching?lang=python) 的新功能,该功能通过 Gemini 1.5 Pro 和 Gemini 1.5 Flash 模型的 Gemini APIs 提供。本指南提供了如何使用 Gemini 1.5 Flash 进行上下文缓存的基本示例。根据

### 应用案例:分析一年的机器学习论文

本指南演示了如何使用上下文缓存来分析我们在过去一年中记录的所有 [机器学习论文的摘要](https://github.com/dair-ai/ML-Papers-of-the-Week)。我们将这些摘要存储在一个文本文件中,现在可以将其输入到 Gemini 1.5 Flash 模型中,并进行高效查询。

### 过程:上传、缓存和查询

1. **数据准备** 首先将包含摘要的 readme 文件转换为纯文本文件。
2. **使用 Gemini API:** 你可以使用 Google 的 `generativeai` 库上传文本文件。
3. **实现上下文缓存:** 使用 `caching.CachedContent.create ()` 函数创建缓存。这需要:
* 指定 Gemini Flash 1.5 模型。
* 为缓存提供一个名字。
* 为模型定义一个指令(例如,“你是一个专业的 AI 研究员……”)。
* 为缓存设置生存时间(例如,15 分钟)。
4. **创建模型:** 然后我们使用缓存的内容创建一个生成模型实例。
5. **查询:** 我们可以开始用自然语言问题查询模型,比如:
* “你能告诉我本周最新的 AI 论文是什么吗?”
* “你能列出提到 Mamba 的论文吗?列出论文的标题和摘要。”
* “关于长上下文 LLMs 的一些创新是什么?列出论文的标题和摘要。”

结果非常有希望。模型准确地从文本文件中检索并总结了信息。上下文缓存证明了其高效性,消除了每次查询都需要重复发送整个文本文件的需要。

这种工作流程有可能成为研究人员的宝贵工具,使他们能够:

* 快速分析和查询大量的研究数据。
* 在无需手动搜索文档的情况下检索特定的发现。
* 在不浪费提示令牌的情况下进行交互式的研究会议。

我们很高兴能进一步探索上下文缓存的应用,特别是在更复杂的情况下,如代理工作流程。


下面是笔记本的链接:

<Cards>
<Card
icon={<CodeIcon />}
title="Context Caching with Gemini APIs"
href="https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/gemini-context-caching.ipynb"
/>
</Cards>
69 changes: 52 additions & 17 deletions pages/applications/function_calling.zh.mdx
Original file line number Diff line number Diff line change
@@ -1,37 +1,49 @@
# 在LLM中调用函数
# LLM 中自定义函数的调用

## 调用函数

函数调用是指可靠地连接LLM与外部工具的能力。让用户能够使用高效的外部工具、与外部API进行交互
函数调用是指可靠地连接 LLM 与外部工具的能力。让用户能够使用高效的外部工具、与外部 API 进行交互

GPT-4和GPT-3.5是经过微调的LLM,能够检测函数是否被调用,随后输出包含调用函数参数的JSON。通过这一过程被调用的函数能够作为工具添加到您的AI应用中,并且您可以在单个请求中定义多个函数。
GPT-4 和 GPT-3.5 是经过微调的 LLM,能够检测函数是否被调用,随后输出包含调用函数参数的 JSON。通过这一过程被调用的函数能够作为工具添加到您的 AI 应用中,并且您可以在单个请求中定义多个函数。

函数调用是一项重要能力。它对于构建LLM驱动的聊天机器人或代理至关重要。这些聊天机器人或代理需要为LLM检索上下文。它们还与外部工具交互。这种交互是通过将自然语言转换为API调用来完成的
函数调用是一项重要能力。它对于构建 LLM 驱动的聊天机器人或代理至关重要。这些聊天机器人或代理需要为 LLM 检索上下文。它们还与外部工具交互。这种交互是通过将自然语言转换为 API 调用来完成的

函数调用使开发者能够创建:

- 能够高效使用外部工具回答问题的对话代理。例如,查询“伯利兹的天气如何?”将被转换为类似`get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')`的函数调用
- 用于提取和标记数据的LLM驱动解决方案(例如,从维基百科文章中提取人名)
- 可以帮助将自然语言转换为API调用或有效数据库查询的应用程序
- 能够高效使用外部工具回答问题的对话代理。例如,查询 “伯利兹的天气如何?” 将被转换为类似 `get_current_weather (location: string, unit: 'celsius' | 'fahrenheit')` 的函数调用
- 用于提取和标记数据的 LLM 驱动解决方案(例如,从维基百科文章中提取人名)
- 可以帮助将自然语言转换为 API 调用或有效数据库查询的应用程序
- 能够与知识库交互的对话式知识检索引擎

在这份指南中,我们展示了如何针对GPT-4和其他开源模型给出提示,以执行不同的函数调用。

## 使用GPT-4进行函数调用
## 使用 GPT-4 进行函数调用

作为一个基本示例,假设我们要求模型检查特定地点的天气。

LLM本身无法响应此请求。因为它所使用的训练数据集截止至之前的某个日期。解决这个问题的方法是将LLM与外部工具结合起来。您可以利用模型的函数调用能力来确定要调用的外部函数及其参数,然后让它返回最终回复结果。以下是一个简单的示例,展示了如何使用OpenAI API实现这一点
LLM 本身无法响应此请求。因为它所使用的训练数据集截止至之前的某个日期。解决这个问题的方法是将 LLM 与外部工具结合起来。您可以利用模型的函数调用能力来确定要调用的外部函数及其参数,然后让它返回最终回复结果。以下是一个简单的示例,展示了如何使用 OpenAI API 实现这一点

假设一个用户向模型提出以下问题:

```
伦敦的天气如何?
```

要使用函数调用处理此请求,第一步是定义一个或一组天气函数。您将作为OpenAI API请求的一部分传递这些函数
要使用函数调用处理此请求,第一步是定义一个或一组天气函数。您将作为 OpenAI API 请求的一部分传递这些函数

```python
# Defines a dummy function to get the current weather
def get_current_weather(location, unit="fahrenheit"):
"""Get the current weather in a given location"""
weather = {
"location": location,
"temperature": "50",
"unit": unit,
}

return json.dumps(weather)

# define a function as tools
tools = [
{
"type": "function",
Expand All @@ -54,9 +66,17 @@ tools = [
},
}
]

# define a list of messages
messages = [
{
"role": "user",
"content": "What is the weather like in London?"
}
]
```

`get_current_weather`函数能够返回指定位置的天气情况。当您将这个函数定义作为请求的一部分传递时,它实际上并不执行函数,只是返回一个包含调用函数所需参数的JSON对象。以下是一些如何实现这一点的代码片段。
`get_current_weather` 函数能够返回指定位置的天气情况。当您将这个函数定义作为请求的一部分传递时,它实际上并不执行函数,只是返回一个包含调用函数所需参数的 JSON 对象。以下是一些如何实现这一点的代码片段。

您可以如下定义一个完整的函数:

Expand All @@ -82,25 +102,40 @@ messages = [
]
```

最后,您可以调用`get_completion`函数,将结果传递给`response`中的`messages``tools`:
最后,您可以调用 `get_completion` 函数,将结果传递给 `response` 中的 `messages``tools`:

```python
response = get_completion(messages, tools=tools)
args = json.loads(response.tool_calls[0].function.arguments)
get_current_weather(**args)
```
这将输出:`'{"location": "London", "temperature": "50", "unit": "celsius"}'`

`response`的构造如下所示:
上述代码中 `response` 的构造如下所示:

```python
ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='...', function=Function(arguments='{"location":"London","unit":"celsius"}', name='get_current_weather'), type='function')])
ChatCompletionMessage(
content=None,
role='assistant',
function_call=None,
tool_calls=[
ChatCompletionMessageToolCall(id='...',
function=Function(
arguments='{"location":"London","unit":"celsius"}',
name='get_current_weather'),
type='function'
)
]
)
```

特别地,`arguments` 对象包含了模型提取的重要参数,这些参数将被用于完成请求。

然后您可以调用一个外部天气API来获取实际的天气信息。一旦您有了天气信息,就可以将其传回模型,随后根据原始用户问题总结出最终回应。
然后您可以调用一个外部天气 API 来获取实际的天气信息。一旦您有了天气信息,就可以将其传回模型,随后根据原始用户问题总结出最终回应。

这里有一个[python notebook](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-function-calling.ipynb),它提供了一个简单示例,展示了如何使用OpenAI API进行函数调用
这里有一个 [python notebook](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-function-calling.ipynb),它提供了一个简单示例,展示了如何使用 OpenAI API 进行函数调用

## 使用开源LLM进行函数调用
## 使用开源 LLM 进行函数调用
更多使用开源LLM进行函数调用的说明即将推出...

## 函数调用用例
Expand Down
4 changes: 2 additions & 2 deletions pages/applications/generating.zh.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# 生成数据
LLMs具有生成连贯文本的强大能力。使用有效的提示策略可以引导模型产生更好、更一致和更真实的响应。LLMs还可以特别有用地生成数据,这对于运行各种实验和评估非常有用。例如,我们可以使用它来为情感分类器生成快速样本,如下所示:
LLMs 具有生成连贯文本的强大能力。使用有效的提示策略可以引导模型产生更好、更一致和更真实的响应。LLMs 还可以特别有用地生成数据,这对于运行各种实验和评估非常有用。例如,我们可以使用它来为情感分类器生成快速样本,如下所示:

*提示:*
```
生成10个情感分析的范例。示例被归类为正面或负面。生成2个负面示例和8个正面示例。使用以下格式的示例:
生成 10 个情感分析的范例。示例被归类为正面或负面。生成 2 个负面示例和 8 个正面示例。使用以下格式的示例:
Q:<句子>
A:<情感>
```
Expand Down
Loading