主页 > 游戏开发  > 

Perl调用DeepSeekAPI脚本

Perl调用DeepSeekAPI脚本

向 chat.deepseek 提问:请将这个 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 = " api.siliconflow /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

说明:

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

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

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

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

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

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

注意事项:

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

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

标签:

Perl调用DeepSeekAPI脚本由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Perl调用DeepSeekAPI脚本

上一篇
ES批量查询

下一篇
智能成绩表