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))