大家好,欢迎来到IT知识分享网。
亲的们,事实证明,v语言真的很优秀,我才刚入坑不到一天的时间,就学会了,如何调用ai机器人,如何与chatGPT3接口进行通信.这个例子在全网目前暂时都是没有的,在此之前,我主要语言是php,调用Ai用的是curl命令.
如:
curl https://api.openai.com/v1/completions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer sk-hZwoLYz***************B5L" \
-d '{
"model": "text-davinci-003",
"prompt": "请写一篇小渔村的故事",
"max_tokens": 4000,
"temperature": 1.0
}' \
--insecure
而在php中,因为天朝防火墙的原因,所以,很难调用成功.当然,php中写curl调用也忒简单了.
use didiyuesao\com\config;
// 举个例子
class gpt
{
// 优先重载
public static function ask($txt)
{
$api_key = config\gpt::api_key();
$turl = 'https://api.openai.com/v1/completions';
$header = [];
$header[] = "Content-Type: application/json";
$header[] = "Authorization: Bearer $api_key";
$req = [];
$req['model'] = 'text-davinci-003';
// $req['model'] = 'text-davinci-002';
// $req['model'] = 'text-curie-001';
// $req['model'] = 'text-ada-001';
// $req['model'] = 'text-babbage-001';
$req['prompt'] = $txt;
$req['max_tokens'] = 1000;
$req['temperature'] = 0.8;
// var_dump($req,json_encode($req),$header,$turl);exit;
$opt = [CURLOPT_TIMEOUT => 5, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => 1];
$opt[CURLOPT_POSTFIELDS] = json_encode($req);
$res = myhttp::curl($turl, 'get', '', $header, $opt);
if ($res) {
return json_decode($res, 1);
}
}
public static function exec($txt)
{
$api_key = config\gpt::api_key();
$cli = <<<doc
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {$api_key}" \
-d '{
"model": "text-davinci-003",
"prompt": "{$txt}",
"max_tokens": 1000,
"temperature": 1.0
}' \
--insecure
doc;
$res=shell_exec($cli);
if ($res) {
return json_decode($res, 1);
}
}
}
其中,用到了两种调用方式,一种是原生的脚本调用,但是性能不好.,另一种,性能好的是用shell_exec($cli),但是这个,会导致服务器超时,崩溃.多调几次就没得玩了.性能最好的是passthru($cli);
做为一个老的PHPer,苦于PHP的性能问题久矣,刚好这两天不是学了v语言吗,
让我们试一试,vlang是否真的不错?
源代码如下:
// 以下是vlang,和golang有点像,但不是,而是V语言,
// 说实话,V语言编程真的是超级简单又优雅
import net.http
import x.json2 as json
import strings
const api_key = "sk-****************B5L"
const chatgpt_url = "https://api.openai.com/v1/completions"
// 示例使用
fn main() {
mytxt:="请写一篇小渔村的故事"
obj := {
"model":json.Any("text-davinci-003"),
"prompt":json.Any(mytxt),
"max_tokens":1000,
"temperature":1.0
}
enc:=json.Encoder{
escape_unicode: false
}
mut sb := strings.new_builder(20)
defer {
unsafe { sb.free() }
}
enc.encode_value(obj, mut sb)!
// print("obj to string :\r\n")
// print(sb.str())
// print("\r\n")
mut h:=http.Header{}
h.set(.content_type,"application/json")
h.set(.accept,"*/*")
// h.set(.content_type,"application/x-www-form-urlencoded")
h.set(.authorization,"Bearer "+api_key)
// print(h)
mut cc:=http.FetchConfig{}
cc.url=chatgpt_url
cc.header=h
cc.method=.post
// cc.data = '{"model":"text-davinci-003","prompt":"请写一首诗,赞美我的祖国","max_tokens":4000,"temperature":1.0}'
cc.data = sb.str()
// print(cc)
res:=http.fetch(cc)!
print(mytxt+"\r\n")
print(res)
}
如果你也刚好在寻找PHP的升级替代方案,不妨学习一下v语言,它比golang简单得多,当然,go语言会遇到的坑,换成rust语言也是一样会遇到,所以,换成v语言也是会遇到 ,但是v语言上学特别快啊,只要看vlang目录的example+lib文件,里面有几百个脚本都是用v语言写的最好的demo,从这里开始,你就能感觉到v语言的语法,到底有多么的精简,没有多余的表达,当然,最最最通俗易懂的,还是php语言,关键是php的底层重构不了,所以,就算用上php8性能也是不如静态编译语言,所以,要么学golang,要么学python,要么学c语言,但是c语言成长,真的是路线特别长,就算学了好久,也还是很难做出自己满意的东西.
但是v语言不一样,它可以直接吸收c语言源代码,直接运行,也能直接与go语言互相转换,还能直接与js语言互相转换,也能互相调用.
v语言(vlang)能出二进制exe文件,也能出dll共享模块 ,dll也能被PHP加载后,调用.
欢迎各种精力充沛的小伙伴,一起入坑哦,我现在是刚入坑2天的状态,感觉很亢奋呐,今晚要不要失眠呢?[灵光一闪]
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/47354.html