如何向GPT提问及参数配置

这篇文章,介绍一下ChatGPT Next开源项目封装的 ChatGPT API 接口网站的使用方法

功能参数设置

打开设置界面可以看到如下选项
请添加图片描述

model

model 是指使用的ChatGPT大模型类型,如上图所示,常用(默认)的是gpt-3.5-turbo,这个模型是目前速度最快,质量较好的,也是我最常用的选项。

gpt-4开头的模型,质量较高,但是速度慢,一般是在gpt-3.5模型的回复质量上有问题时,可以切换到gpt-4模型来使用,下面截图中最后一个选项也可以实时切换gpt模型

随机性

随机性范围是0到1,如果值趋近于0,则每次回复的内容越准确,如果值趋近于1,则每次回复的结果开放性越大。也就是如果想要GPT做一些精确的回答(如编程相关问题),则值小一些。但是这不是绝对的,一般情况下保持默认0.5即可。如果该参数不满足需求,可以自行调整。
请添加图片描述

附带历史消息数

是指每次聊天时,发送的历史聊天记录数量,每次发送聊天信息,调用ChatGPT的API接口时,需要附带多少之前的聊天记录信息,这里的聊天记录包括你的提问以及GPT的回复。当需要进行多次交互,进行很长的聊天时,可以把这个值调大,请求时携带更多的上下文信息,让GPT根据上下文,做出更准确的回复。(一般情况下维持默认值,感觉GPT对上下文理解不足时,值调整大一些)

历史摘要

这个是bool选择器,勾选时,代表将上下文信息压缩后发送给GPT,不勾选时,将所有聊天记录完整的发送给GPT。注意,这里的压缩不是调用数据压缩算法做压缩,而是将大段的聊天记录总结成一段更加精炼的文字,发送给GPT。

当需要GPT完整携带上下文信息时,去勾选。

面具选择

左下角新建一个聊天时,可以选择一个面具

请添加图片描述

“面具”的意思是,你需要这个GPT模型充当一个什么样的角色,完成什么样的功能,比如充当“小红书写手”输出文字会是适合在小红书上发表的文案。(程序员写代码,查资料一般用不上)

请添加图片描述

清除聊天功能

请添加图片描述

如果之前聊天已经做了多次交互,想要GPT下次回答时,不要携带之前的聊天记录,可以点击“清除聊天”,这样再次询问GPT,相当于重新开启一段对话。

注意:如果重新提问一个新的问题,必须清除之前的聊天或者重新开启一个聊天窗口,否则之前的上下文信息,会影响新问题的回答。

如何提问ChatGPT

需要遵循如下几个原则

  1. ****编写清晰、具体的指令。****提问时尽可能地使用非常具体的,不要带有模糊意思的语句,GPT才会给出足够准确的回答
  2. GPT模型偶尔会生成一些看似真实实则编造的知识,一定要注意区分回答的真实性
  3. GPT模型可以输出结构化信息,比如让它输出一段实现某个功能的代码、实现某个查询的SQL语句、输出带有某种结构的json文本
  4. 不断追问式提问,有时一个复杂的问题,GPT第一次回答的结果不够满意,你可以根据它回答的结果内容继续提问,GPT会联系上下文信息,做出更加准确的回答。来回交互提问的次数越多,GPT越能获得足够多的上下文信息。但是我实际使用过程中,感觉上下文不能太多,达到某个程度后,GPT回答的更加有问题了,这时可以重新开启一个聊天,将刚才交互中有用的部分提取出来,重新提问GPT

代码分析功能

代码中存在很多非文本内容,比如大括号、小括号、引号,这些符号都会影响GPT对这段代码的理解,可以使用反单引号 ````或者三个单引号 ''' 来包装代码文本,让GPT将代码识别为一个整体。

比如,提问句如下:

'''
async def aparse(self, completion: str) -> T:
        try:
            parsed_completion = self.parser.parse(completion)
        except OutputParserException as e:
            new_completion = await self.retry_chain.arun(
                instructions=self.parser.get_format_instructions(),
                completion=completion,
                error=repr(e),
            )
            parsed_completion = self.parser.parse(new_completion)

        return parsed_completion
'''
请解释一下这段代码是什么意思

返回结果如下:

这段代码是一个异步函数 `aparse`,接受一个字符串参数 `completion`,并返回一个类型为 `T` 的值。

代码中的主要逻辑如下:

1. 首先,代码尝试使用 `self.parser` 对象解析 `completion` 字符串,将解析结果赋值给 `parsed_completion` 变量。
2. 如果解析过程中抛出了 `OutputParserException` 异常,意味着解析失败,代码会进入 `except` 块。
3. 在 `except` 块中,代码会调用 `self.retry_chain.arun` 异步方法,传递一些参数:
   - `instructions`:通过调用 `self.parser.get_format_instructions()` 获取格式化指令。
   - `completion`:原始的 `completion` 字符串。
   - `error`:使用 `repr(e)` 获取异常 `e` 的字符串表示。
4. `self.retry_chain.arun` 方法会处理这些参数,并返回一个新的完成字符串 `new_completion`。
5. 接下来,代码再次使用 `self.parser` 对象解析 `new_completion` 字符串,并将解析结果赋值给 `parsed_completion` 变量。
6. 最后,函数返回 `parsed_completion`。

总体来说,这段代码的目的是尝试解析给定的 `completion` 字符串,如果解析失败,则通过调用异步方法 `self.retry_chain.arun` 获取一个修正后的字符串,并再次尝试解析该字符串。最终返回解析结果。

代码编写功能

我的提示词:

你是Python编程专家,请给一个足够典型的例子,来让我学习一下python中asyncio 特性

(提示词编写时,可以在前面添加一句你是Python编程专家这样会使GPT回答结果更加专业化)

GPT回答:

当然!下面是一个典型的例子,演示了如何使用`asyncio`库来实现异步编程。

```python
import asyncio

async def hello():
    print("Hello")
    await asyncio.sleep(1)
    print("World")

async def main():
    await asyncio.gather(hello(), hello(), hello())

asyncio.run(main())
```

在这个例子中,我们定义了两个异步函数`hello()`和`main()`。`hello()`函数打印"Hello",然后等待一秒钟(使用`asyncio.sleep(1)`)并打印"World"。`main()`函数使用`asyncio.gather()`同时运行三个`hello()`函数。

最后,我们使用`asyncio.run()`来运行`main()`函数。这个函数会创建一个事件循环,执行异步任务,并等待它们完成。

运行这个例子,你会看到"Hello"会立即打印出来,然后等待一秒钟,最后打印出"World"。这个过程会在每个`hello()`函数中重复进行,因为我们同时运行了三个`hello()`函数。

这个例子展示了`asyncio`库的基本用法。它允许你编写异步代码,利用事件循环和协程来实现非阻塞的并发执行。你可以在`async`函数中使用`await`关键字来等待一个异步操作完成,而不会阻塞其他任务的执行。

希望这个例子能帮助你理解`asyncio`的基本概念和用法!如果你有任何问题,我会很乐意帮助你。

上面只是简单讲解了一下如何使用GPT,想要深入学习,请看其他学习链接:

  1. 吴恩达免费课程,中文翻译版:https://datawhalechina.github.io/prompt-engineering-for-developers/#/
  2. 提示词工程:https://github.com/yzfly/awesome-chatgpt-zh

欢迎访问我的博客网站,你会有不一样的发现:
https://www.nkshare.space/

### 使用Python代码调用GPT API实现对话功能 为了通过Python与GPT模型进行交互,需先完成`openai`库的安装[^1]。这可以通过pip工具轻松完成: ```bash pip install openai ``` 之后,在编写用于调用API的应用程序之前,还需设置OpenAI API密钥。通常做法是在脚本开头定义环境变量或直接在代码中指定(出于安全考虑推荐前者)。下面展示了一个简单的配置方式: ```python import os os.environ["OPENAI_API_KEY"] = "your_api_key_here" ``` 对于实际发起请求的部分,则可以利用`openai.Completion.create()`函数来创建并发送HTTP POST请求给GPT服务端点。此过程涉及传递多个参数以定制化响应行为,比如选择使用的引擎名称、输入提示文本以及控制输出长度等选项。 这里给出一段完整的示例代码片段,它展示了如何构建一个基本的聊天机器人应用,该应用程序能够接收用户消息作为输入,并返回由GPT生成的回答字符串: ```python import openai import os # 设置API Key openai.api_key = os.getenv("OPENAI_API_KEY") def chat_with_gpt(prompt): response = openai.ChatCompletion.create( model="gpt-3.5-turbo", # 指定要使用的模型版本 messages=[{"role": "user", "content": prompt}], # 用户的消息内容 max_tokens=100, # 控制回复的最大token数量 temperature=0.7, # 调整创造力水平,默认值为1 n=1, # 返回的结果数目 stop=None # 定义结束序列 ) message = response.choices[0].message.content.strip() return message if __name__ == "__main__": user_input = input("请输入您的问题:") reply = chat_with_gpt(user_input) print(f"GPT的回答:\n{reply}") ``` 上述代码实现了从获取用户的提问到向其提供来自GPT模型的答案整个流程的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值