文章目录
本文将教大家用python调用OpenAI API进行文本创作。
使用OpenAI账户登录:https://openai.com/,登录后选择:View API keys -> API Keys 页面。
API Keys:
点击 Create new secret key 获得一个API密钥,复制保存。
pip命令安装OpenAI Python包:
pip install openai
在要编写的Python程序中导入OpenAI包并使用刚才获得的API密钥进行身份验证:
import openai
openai.api_key = "YOUR_API_KEY" #刚才获取的API密钥
使用openai.Completion.create()方法来生成文本。以下是使用OpenAI API生成文本的示例代码:
prompt = "Once upon a time"
response = openai.Completion.create(
engine="davinci",
prompt=prompt,
temperature=0.5,
max_tokens=50,
n=1,
stop=None,
timeout=20,
)
print(response.choices[0].text)
在这个示例中:
prompt:想要使用的文本,就是你要创作文本的主体和要求engine:使用的OpenAI模型,可以通过访问OpenAI Docs Models 来查看全部可用模型temperature:是用于控制生成文本的随机性的参数,取值在0到1,数值越高,生成的结果越具有创意性max_tokens:是生成的最大字数n:要生成的文本的数量stop:指定停止生成文本的条件timeout:超时时间(以秒为单位)当运行上面的代码时,OpenAI API将生成文本并将其存储在response.choices[0].text中,可以将其打印出来或使用它进行其他操作。
写一首关于思乡的诗歌(给文艺公众号的编辑们以启发):
import openai
openai.api_key = "YOUR_API_KEY" #刚才获取的API密钥
prompt = "写一首关于思想的诗歌" #要创作文本内容的主体和要求
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
temperature=0.8,
max_tokens=1000,
n=1,
stop=None,
timeout=20,
)
print(response.choices[0].text)
输出结果:
游子的思乡行行路远远,去到天边外, 心想家乡里,想来又难来;
梦里游子去,梦中多山川, 思乡情深深,无法离开家;
故乡的景色,让人思念更浓, 家乡可能距离太远, 游子想去看看,又恐怕难行走;
绿水青山总在心里, 思乡情更浓,家乡的爱永不变, 游子的思乡,再也不能抹去!
通过程序推荐相关的阅读数据(原理是根据输入的要求自动匹配最符合的书籍):
import openai
openai.api_key = "YOUR_API_KEY" #刚才获取的API密钥
prompt = "推荐5本最适合学习python的书籍"
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
temperature=0.8,
max_tokens=1000,
n=1,
stop=None,
timeout=20,
)
print(response.choices[0].text)
1、《Python编程:从入门到实践》(美)高汤·格林(Eric Matthes)著
2、《Python Cookbook》(美)约翰·罗斯柴尔德(John C. Rossbach)和马克· 埃文斯(Mark Lutz)著
3、《Python核心编程》(美)马克·埃文斯(Mark Lutz)著
4、《Python基础教程》(美)马克·埃文斯(Mark Lutz)著
5、《Python编程快速上手》(美)凯文·麦克米兰(Kevin M. Mcmillan)著
从推荐结果来看,还是有很高的参考价值的。
使用百度查阅一些资料或寻找问题答案时,搜索引擎只会根据关键词匹配结果然后堆砌式的展现,现在的这个模型可以代替百度替我们回答一些问题并且有逻辑的说明原因。
例如:询问小白入门深度学习的推荐路线
import openai
openai.api_key = "YOUR_API_KEY" #刚才获取的API密钥
prompt = "小白入门深度学习的推荐路线"
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
temperature=0.8,
max_tokens=1000,
n=1,
stop=None,
timeout=20,
)
print(response.choices[0].text)
输出:
- 深度学习的学习路线:
(1)首先,学习基础的数学知识,如概率论、线性代数、微积分、数值计算等;
(2)然后,学习深度学习的基础知识,如机器学习理论、深度神经网络结构、反向传播算法、神经网络优化方法等;
(3)接着,熟悉主流开源深度学习框架,如TensorFlow、PyTorch、Keras等;
(4)最后,根据自身需求,学习自然语言处理、计算机视觉、时序处理等应用案例,在自己的项目上运用深度学习的知识。
- 相关课程:
(1)Andrew Ng 的《深度学习》课程;
(2)林轩田的《机器学习基石》课程;
(3)林轩田的《机器学习技法》课程;
(4)元成毅老师的《神经网络与深度学习》课程;
(5)《深度学习之TensorFlow入门指南》课程;
使用Python调用OpenAI API进行文本创作可以轻松地实现自然语言处理和文本生成,无需复杂的算法和底层编程;所生成文本的准确性也很高,具有一定的参考价值,是一些文字工作者的必备神器;
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL