您可以创建一个简单的命令行工具,通过命令行与ChatGPT API进行交互. 这是如何.
我们将用Python编写一个简单的脚本,它通过命令行读取问题并连接到 ChatGPT API 使用 LangChain 并检索答案,然后将交互结果存储在一个简单的文本文件中.
生成的文本文件捕获对话,看起来像这样:
Langchain Session在2023-06-02T122046与gpt-3.5-turbo
2023-06-02T122147:
问:哪些是计算机科学中最常用的算法?
A:计算机科学中有很多算法,但最常用的有:
1. 排序算法:这些算法用于按特定顺序对数据进行排序, 例如字母或数字.
2. 搜索算法:这些算法用于在较大的数据集中查找特定数据.
3. 图形算法:这些算法用于分析和操作图形, 哪些用来表示对象之间的关系.
4. 动态规划算法:这些算法用于通过将复杂问题分解成更小的问题来解决复杂问题, 更易于管理的子问题.
5. 分治算法:这些算法通过将问题分解成更小的问题来解决问题, 更易于管理的部分.
6. 贪心算法:这些算法用于通过在每一步做出最佳选择来解决优化问题.
7. 回溯算法:这些算法用于通过尝试不同的解决方案来解决问题,并在发现解决方案不正确时回溯.
8. 随机算法:这些算法用于通过随机化找到解决方案来解决问题.
2023-06-02T122247:
问:哪些是计算机科学中最流行的排序算法?
A:在计算机科学中最流行的排序算法是:
1. 冒泡排序
2. 选择排序
3. 插入排序
4. 归并排序
5. 快速排序
6. 堆排序
7. 基数排序
8. 计数排序
9. 桶排序
10. 壳类
这些算法被广泛应用于各种应用中,并在大多数计算机科学课程中教授.
2023-06-02T122428:
问:你能给我展示一个用Rust写的堆排序的实现吗?
A:当然,这是Rust中堆排序的实现:
“‘生锈
fn heap_sort (加勒比海盗: &[32]) {
令len = 加勒比海盗.len ();
对于I (0..Len / 2).牧师(){
Heapify (加勒比海盗, len, i);
}
对于I (1..兰).牧师(){
加勒比海盗.交换(0,1);
Heapify (加勒比海盗, i, 0);
}
}
fn heapify(加勒比海盗: &Mut [i32], n: ussize, i: ussize) {
设mut最大= i;
令left = 2 * I + 1;
设右= 2 * I + 2;
if left < n && 加勒比海盗[left] > 加勒比海盗[largest] {
最大=左;
}
if right < n && 加勒比海盗[right] > 加勒比海盗[largest] {
最大=右;
}
如果最大 != i {
加勒比海盗.交换(我最大);
Heapify (加勒比海盗, n,最大);
}
}
Fn main() {
让mut = [5,2,9,1,5,6];
heap_sort (&傻瓜加勒比海盗);
println!("{:?}”,加勒比海盗);
}
```
在这个实现中, ' heap_sort '接受对' i32 '值数组的可变引用,并使用堆排序算法对其进行排序. ' heapify '函数是一个辅助函数,它从给定数组递归地构建最大堆. ' main '函数演示了如何使用' heap_sort '函数对数组进行排序.
的必备条件
Conda,一个Python包管理器被用来创建一个专用的环境 LangChain 和 OpenAI 安装了软件包.
为了用Conda创建一个环境,我们执行了下面的命令:
Conda create——name langchain python=3.10
以下是用于安装软件包的命令:
Conda install -c Conda -forge openai
Conda安装-c Conda -forge langchain
如果你想导入环境定义,这里是我用Conda创建的环境的定义导出文件:
你还需要在OpenAI网站上生成一个API密钥: http://platform.openai.com/account/api-keys
我最终使用了付费帐户来使用API. 你可以在这里查看更多全球最大的博彩平台付款方式的信息:
OpenAI API:
用于访问OpenAI开发的新AI模型的API
平台.openai.com
Python脚本
脚本首先导入一些标准的Python库,然后是我们聊天所需的LangChain包:
导入系统
进口操作系统
进口再保险
从pathlib导入路径
从datetime导入datetime
# LangChain
从langchain.chat_models导入ChatOpenAI
从langchain.模式导入(
HumanMessage
)
然后我们初始化一些配置参数, 包括OpenAI密钥和我们想要使用的模型.
#配置
#把你的API密钥放在这里
os.environ["OPENAI_API_KEY"] = ''
#把你的模型放在这里
#其他可能的聊天选项是'gpt-3.5 -涡轮- 0301.
Model_name = "gpt-3 ..5-turbo”
应该很快会有其他型号的. 我试过了 gpt-4 但这抛出了一个错误,因为我没有访问公共API测试版. 这里有一些 额外的信息 在其他模型上.
在此之后,您只需创建用于与您想要使用的模型的REST API交互的主对象:
#初始化聊天对象.
ChatOpenAI(model_name=model_name, 温度=0)
在这里,我们使用选定的模型和a初始化聊天对象 温度 of 0,这是为了减少响应的随机性. 的默认值 温度 is 1. 查看有关此参数的更多信息 在这里.
该脚本包含一个用于生成当前日期的方法:
def generate_iso_date ():
Current_date =日期时间.现在()
返回重新.子(r \.\d+$", "", current_date.isoformat ().取代 (':', ''))
还有一个用来捕获聊天内容的类:
类ChatFile:
def __init__(自我, current_file: Path, model_name: str) -> None:
自我.Current_file = Current_file
自我.Model_name = Model_name
print(f"写入文件{current_file}")
打开(自我.当前文件,'w')作为f:
f.在{generate_iso_date()}上写入(f"Langchain Session ".model_name} \ n \ n”)
Def store_to_file(自我,问题:str,答案:str):
打印(f“{答案}”)
打开(自我.Current_file, 'a')作为f:
f.写(f”{generate_iso_date ()}: \ nQ:{问题}\ nA:{答案}\ n \ n”)
#创建聊天文件
chat_file = ChatFile(Path(f"{model_name}_{generate_iso_date()})).txt”),model_name)
然后是一个简单的循环,它读取用户输入并将输入发送到ChatGPT模型,接收答案并将其显示在控制台上并将其保存在本地文件中.
sys中的For行.stdin:
print(f"[{model_name}]", end =">> ")
问题=行.带()
如果'q' ==问题:
打破
LLM以提示符作为输入并输出补全
resp = chat([HumanMessage(内容=question)])
答案= resp.内容
chat_file.store_to_file(问题,回答)
全文如下:
结论
LangChain提供了与ChatGPT的简单集成,您可以通过上面所示的简单脚本使用它. 你只需要有一个OpenAI密钥,在大多数情况下,一个付费的OpenAI帐户.
ChatGPT 4模型尚未向更广泛的公众开放, 所以现在大多数人将不得不坚持使用ChatGPT 3.5个模型.