当前位置: 首页 > news >正文

Perl 调用 DeepSeek API 脚本

向 chat.deepseek.com 提问:请将这个 python 脚本翻译为 perl 语言脚本

参阅:Python 调用 DeepSeek API 完整指南

将 Python 脚本翻译为 Perl 语言脚本时,需要注意两种语言之间的语法差异。以下是将给定的 Python 脚本翻译为 Perl 的版本: test_deepseek_v1.pl 

use strict;
use warnings;
use utf8;
use JSON;
use LWP::UserAgent;
use HTTP::Request::Common;
use POSIX qw(strftime);
use Encode qw(encode decode);# 保存对话内容到文件
sub save_to_file {my ($file, $content, $is_question) = @_;my $timestamp = strftime("%Y-%m-%d %H:%M:%S", localtime);if ($is_question) {print $file "\n[$timestamp] Question:\n$content\n\n[$timestamp] Answer:\n";} else {print $file $content;}
}# 主函数
sub main {# 配置my $url = "https://api.siliconflow.cn/v1/chat/completions";my $headers = {"Content-Type" => "application/json","Authorization" => "Bearer YOUR_API_KEY"  # 替换为你的 API Key};# 打开文件用于保存对话open(my $file, '>>:encoding(UTF-8)', "conversation.txt") or die "无法打开文件: $!";while (1) {# 获取用户输入print "\n请输入您的问题 (输入 q 退出): ";my $question = <STDIN>;chomp($question);$question =~ s/^\s+|\s+$//g;if (lc($question) eq 'q') {print "程序已退出\n";last;}# 保存问题save_to_file($file, $question, 1);# 准备请求数据my $data = {"model" => "deepseek-ai/DeepSeek-V3","messages" => [{"role" => "user","content" => $question}],"stream" => JSON::true,"max_tokens" => 2048,"temperature" => 0.7,"top_p" => 0.7,"top_k" => 50,"frequency_penalty" => 0.5,"n" => 1,"response_format" => {"type" => "text"}};my $ua = LWP::UserAgent->new;my $request = POST($url, $headers, Content => encode_json($data));try {# 发送流式请求my $response = $ua->request($request);if ($response->is_success) {# 处理流式响应my @lines = split /\n/, $response->decoded_content;foreach my $line (@lines) {if ($line) {if ($line =~ /^data: /) {if ($line eq 'data: [DONE]') {next;}my $json_str = substr($line, 6);  # 去掉 'data: ' 前缀my $content = decode_json($json_str);if ($content->{choices}[0]{delta}{content}) {my $chunk = $content->{choices}[0]{delta}{content};print $chunk;print $file $chunk;$file->flush();}}}}# 添加分隔符print "\n----------------------------------------\n";print $file "\n----------------------------------------\n";$file->flush();} else {die "请求失败: " . $response->status_line;}} catch {my $error_msg = "请求错误: $_\n";print $error_msg;print $file $error_msg;$file->flush();}}close($file);
}# 执行主函数
main();

运行  cmd
chcp 65001
perl  test_deepseek_v1.pl

说明:

  1. 模块导入:Perl 使用 use 来导入模块,例如 use JSON; 和 use LWP::UserAgent;

  2. 文件操作:Perl 使用 open 和 close 来打开和关闭文件。

  3. JSON 处理:Perl 使用 JSON 模块来处理 JSON 数据。

  4. HTTP 请求:Perl 使用 LWP::UserAgent 来发送 HTTP 请求。

  5. 异常处理:Perl 使用 try 和 catch 来处理异常(需要 Try::Tiny 模块,但在这个例子中简化了异常处理)。

  6. 流式处理:Perl 通过逐行处理响应内容来模拟流式处理。

注意事项:

  • Perl 的 try 和 catch 语法需要 Try::Tiny 模块,如果没有安装,可以使用 eval 来替代。

  • Perl 的 print 和 flush 操作与 Python 类似,但需要显式调用 flush 来确保数据写入文件。

http://www.lryc.cn/news/545620.html

相关文章:

  • 2025国家护网HVV高频面试题总结来了01(题目+回答)
  • 【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)
  • 【前端场景题】如何应对页面请求接口的大规模并发问题
  • Sublime Text4安装、汉化
  • Python PDF文件拆分-详解
  • MacDroid for Mac v2.3 安卓手机文件传输助手 支持M、Intel芯片 4.7K
  • 人大金仓国产数据库与PostgreSQL
  • 阿里云 Qwen2.5-Max:超大规模 MoE 模型架构和性能评估
  • C++ 标准库容器的常用成员函数
  • MySQL双主搭建-5.7.35
  • Uniapp开发微信小程序插件的一些心得
  • Vscode通过Roo Cline接入Deepseek
  • 不同规模企业如何精准选择AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析与对比
  • 如何有效判断与排查Java GC问题
  • 【笔记】用大预言模型构建专家系统
  • Android SystemUI深度定制实战:下拉状态栏集成响铃功能开关全解析
  • 【Python】基础语法三
  • [Computer Vision]实验六:视差估计
  • 【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random
  • LabVIEW虚拟弗兰克赫兹实验仪
  • LLC谐振变换器恒压恒流双竞争闭环simulink仿真
  • TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具
  • Python 绘制迷宫游戏,自带最优解路线
  • vue3学习-1(基础)
  • deepseek使用记录18——文化基因之文化融合
  • Hadoop简介
  • 密码学(哈希函数)
  • 谈谈单例模式中通过Htools包的SpringUtil.getBean获取Bean的好处
  • 本地部署大语言模型-DeepSeek
  • adb的安装