chatgpt-prompt和-function-call
prompt
定义
在ChatGPT中,prompt 通常指的是一个输入的文本段落或短语,作为生成模型输出的起点或引导。prompt 可以是一个问题、一段文字描述、一段对话或任何形式的文本输入,模型会基于 prompt 所提供的上下文和语义信息,生成相应的输出文本。
设置 prompt 就是设置你与ChatGPT的对话模式,以下我先罗列基本的提示模式
提示模式
-
1、解释 这种模式下,你输入的内容是让ChatGPT对某个概念或理论进行解释和说明。他的主要作用是对各种概念做定义。
-
2、类比 这种模式下,你需要创造两种比喻或类比的对象或着结构,然后让ChatGPT进行概念的迁移。他的主要作用是让我们「以旧学新」,快速理解一些陌生领域的知识。
-
3、罗列 这种模式的目的你可以让ChatGPT遍历和列举事物的种类、各种属性和特点等。方便你更了解某类事物,主要价值有:提供灵感、补全认知盲区。
-
4、转化 这种提示模式里,你可让ChatGPT按照你想要的格式转化内容,有利于把混乱的内容整理成清晰的内容。
-
5、限制 这种提示模式里,你可以限制ChatGPT不要输出某些东西,有利于他更清晰更准确的呈现内容。
-
6、增改 增改的意思是进行增加、删除、修改某些内容。这种提示模式下,你可以让他增加或者改正某些内容。本质是一种微调内容的方法。
-
7、对比 这种提示模式下,你可以让ChatGPT比较两个或多个事物之间的相似性和差异性。有利于你分析问题,思考利弊。
-
8、分类 这种提示模式下,你可以让ChatGPT按照一定标准或特点对事物进行分类,价值是更好的分析事物和记忆。
-
9、翻译 翻译的其实也是转化的一种,只不过由于人类对语言了解需求过于庞大,我单独把他拿出来作为特定研究。
-
10、推理 这种提示模式下,你可以让ChatGPT观察和推断出未知的事实或逻辑关系,他的价值在于提供更完善的解决方案和灵感。
-
11、归纳 你可以把归纳理解成做复盘和总结,这种提示模式下ChatGPT可以从特定的例子或事实中归纳出一般规律或结论,可以让你看清楚一些事情的本质(也考验你的判断力)。
-
12、模拟 在这个提示模式下,你可以让ChatGPT模拟某个过程或现象。这个提示的价值是可以让你快速掌握某些技能。
-
13、演员 在这个提示模式下,你可以让ChatGPT充当各种角色。这个提示模式的价值是可以让你和他的对话更聚焦,更专业,提高获取信息的效率。
function call
import requests
import openai
import json
def query_ip_reputation(ip):
# 获取一个微步APIkey,不会玩的去问ChatGPT
api_key = "<apikey>"
url = f"https://api.threatbook.cn/v3/scene/ip_reputation?apikey={api_key}&resource={ip}"
resp = requests.get(url)
if resp.status_code == 200:
print(resp.text)
return resp.text
else:
raise Exception(resp.text)
openai.api_key = "sk-<apikey>"
# confirm authentication was successful
openai.Engine.list()['data'][0]
query_ip_reputation_func = {
"name": "ip_reputation",
"description": "Query the reputation of IP address",
"parameters": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The target IP address that you need to query for the reputation"
}
},
"required": ["ip"]
}
}
prompt = "给我查询这个IP 8.8.8.8的信誉"
res = openai.ChatCompletion.create(
model='gpt-3.5-turbo-0613', # swap for gpt-3.5-turbo-0613 if needed
messages=[{"role": "user", "content": prompt}],
functions=[query_ip_reputation_func]
)
if res['choices'][0]["finish_reason"] == "function_call":
print("We should call a function!")
name = res['choices'][0]['message']['function_call']['name']
params = json.loads(res['choices'][0]['message']['function_call']['arguments'])
name, params
print(query_ip_reputation(**params))