什么是 GitHub Copilot?
为什么我想要使用 GitHub Copilot 发送 tweet?
它对你来说有什么价值?
如何通过 Copilot 发送 tweet?
幸运的是,我将在这篇文章中回答所有这些问题!
Copilot 是一款 AI 结对程序员,可帮助你以更少的工作更快地编写代码。如果你从未使用过它并且你正在努力想象它的行为,我会将其比作 Gmail 和 Google Docs 中的智能撰写功能。与智能撰写类似,GitHub Copilot 会预测你的下一行代码以提高你的工作效率。
我是一名开发人员倡导者,我的部分职责是构建演示以提高开发人员对新功能的认识。7 月,Twitter 的 DevRel 团队要求 GitHub DevRel 团队合作制作一个展示 Twitter API V2 和 GitHub Copilot 的直播。该直播的目的是展示 GitHub Copilot 可以帮助你利用 Twitter 的 API v2。我很兴奋地同意做这个直播,然后我意识到我必须使用 Tweepy,这是一个易于使用的 python 库,用于访问 Twitter API。有一个巨大而显然的问题:我不知道如何使用 Python 编写,所以它对我来说并不容易使用。我是一名训练有素的 JavaScript 开发人员。我甚至可以在 Java 或 C# 代码中找到自己的方法。但我一生从未接触过 Python。每个人都说 Python 很简单,因为它很容易阅读,这是他们在学校里学的语言。然而,我只有不到一周的时间来准备和发布演示,网上有很多陌生人在看着我。
巧合的是,我发现可以在 Copilot 上学习使用 Tweepy 访问 Twitter 的 API。虽然我很紧张,但我意识到这是一个完美的解决方案。我可以结构性的展示 GitHub Copilot 如何帮助我使用 Tweepy。这招很奏效!GitHub Copilot 在不到 30 分钟的时间里帮助我构建了演示。虽然我在游泳时打了几个小嗝,但它很奏效。
诚然,在我的角色中,我已经报名参加演示、讨论或使用不熟悉的工具进行构建,因为我相信离开我的舒适区将帮助我快速成长和学习的概念。我已经在多个项目中使用 GitHub Copilot ,它帮助我快速完成项目。一些例子包括:
使用 Applitools 演示 GitHub Copilot
在我的存储库中构建自动化
只需在不到一天的时间内完成随机的简短申请
GitHub Copilot 并不能取代学习如何编程的复杂性,因为在不知道自己在做什么的情况下,你很容易无意中引入错误或不良实践。但是,如果你已经清楚要完成的任务,并对要编写的代码行背后的逻辑有深入的了解,但不熟悉语法,Copilot 可以提供帮助。
我选择使用 Copilot 发送推文是因为我沉迷于 Twitter,而且我觉得以编程方式发送推文比通过 GET 请求检索推文更令人兴奋。
从表面上看,以编程方式发送推文似乎并不实用。我的一个想法是,每当一个问题被标记「第一好问题」时,开源项目就可以自动在推特上发布「第一好问题」。目的是吸引新的贡献者并帮助新的贡献者找到可实现的问题。在Copilot 的帮助下,我使用 GitHub Action 构建了一个解决方案,我将在以后得文章中介绍该解决方案。
如果你对于 GitHub Copilot 如何为你工作感到好奇,这里写了很多有关各种用例的文章。对于我的简短回答,这很有趣,你将学习如何优化 Copilot 的功能以提高你的工作效率。
你可以在 Twitter 文档中找到有关注册 Twitter 开发者账户的信息
此步骤将帮助你生成访问 Twitter API 所需的令牌和密钥。请注意:这不是创建应用程序商店中存在的应用程序。相反,它指的是你正在构建用于通过 Twitter 的 API 与 API 进行交互的「应用程序」。保存 consumer secret、consumer key、access token 和 access token secret ,因为我们将在本教程的后面使用这些授权。
要启用 GitHub Copilot,请导航到 https://github.com/settings/copilot 。这应该会带你进入一个带有按钮的页面,提示你启用 GitHub Copilot。请注意,如果你是学生,则可以免费访问 GitHub Copilot。
你可以安装 GitHub Copilot 的插件在 Neovim、JetBrains IDEs、Visual Studio 和 Visual Stuadio Code。在下图中,我高亮了 Github Copilot 和 Github Copilot Labs 插件。阅读之前的博客 ,了解这些插件的差异。安装插件程序后,它可能会要求你登录,因此请安装提示完成身份验证过程。
正如我提到的,tweepy 是一个 Python 库,可以轻松使用 Twitter API。Twitter 似乎很欣赏它的存在,因为 Twitter DevRel 团队建议我使用该库。要开始使用 tweepy:
创建一个文件夹,用于存放该项目相关代码。
在该文件夹中,运行如下命令来安装 tweepy:
pip3 install tweepy
如果你曾经安装过 tweepy,运行如下命令
pip3 install tweepy --upgrade
我将文件 sendTweet.py 存储在名为 copilot-tweepy 的新目录中.
我写了一行注释
# import the tweepy library
这对我很有帮助,因为我不确定如何处理 Python 中的库导入,Copilot 向我展示了如何操作。在下面的屏幕截图中,它填充了一行代码:
import tweepy
我写了一条注释,这样我就可以使用 tweepy 客户端和我的 API 授权,但是 Copilot 没有建议所需的解决方案!由于 Twitter API v2 仍然相对较新,因此它不会出现在首要建议中。
下图的截屏显示了 Copilot 提出的建议与我的目标之间的不准确。
默认情况下,Copilot 将提供初始建议,但你可以通过如下的方式查看更多 Copilot 的建议:
将鼠标悬停在 Copilot 的建议上,它将列举出更多可选的建议
使用键盘快捷键。学习更多的操作 Copilot 的快捷键,请点这里
对于这种情况,我选择「打开 GitHub Copilot」选项来显示多个建议。它打开了一个新 tab ,其中包括 119 行建议。在阅读了一些 Twitter API 文档后,我了解到 tweepy.Client 是 Twitter API v2 的正确语法,因此我专门搜索了关键字 tweepy.Client。我找到了我需要的解决方案并接受了该解决方案。
最适合我的建议是
client = tweepy.Client(consumer_key="",
consumer_secret="",
access_token="",
access_token_secret="")
我在与 sendTweet.py 相同的目录中创建一个名为 config.py 的文件。我使用此文件来避免向公众公开 API 授权。
我在配置文件中写入了前几行
# consumer secret
CONSUMER_SECRET_KEY = ""
# consumer key
Copilot 现在可以推断我需要包含 ACCESS_TOKEN 和 ACCESS_TOKEN_SECRET。
我为每个键传递了正确的值。
我写了一条注释# import the config file
并且接受了 Copilot 的下一行建议。
当你填写每个值时,Copilot 会注意到该模式并自动为你填充值!
输入所有值后,该代码块应如下所示:
client = tweepy.Client(consumer_key=config.CONSUMER_KEY,
consumer_secret=config.CONSUMER_SECRET_KEY,
access_token=config.ACCESS_TOKEN,
access_token_secret=config.ACCESS_TOKEN_SECRET)
我写了一条如下的注释:
# create a variable called tweet with a string that says 'I wrote this tweet with Copilot
Copilot 正确的理解了我的注释,所以我接收了初始的建议。
在这一不受,我必须写一个非常具体的注释,我在最初写了一条注释:
#send tweet
不幸的是,Copilot 返回了 Twitter API v1 的建议。为了优化 Copilot 提供的建议,我更新注释:
# send tweet with client.create_tweet method and text as argument. Save the result in a variable called response
这次 Copilot 给了我正确的结果
发送推文的行应该是这样的:
# send tweet with client.create_tweet method and text as argument. Save the result in a variable called response
response = client.create_tweet(text=tweet)
打印 response 返回值帮助我们了解推文是否发送成功或者为什么失败。
print(response)
两个文件的代码片段如下:
sendTweet.py
# import the tweepy library
import tweepy
# import the config file
import config
# create client with tweepy.Client with consumer key and consumer secret and access token as arguments
client = tweepy.Client(consumer_key=config.CONSUMER_KEY,
consumer_secret=config.CONSUMER_SECRET_KEY,
access_token=config.ACCESS_TOKEN,
access_token_secret=config.ACCESS_TOKEN_SECRET)
# create a variable called tweet with a string that says 'I wrote this tweet with Copilot'
tweet = 'I wrote this tweet with Copilot'
# send tweet with client.create_tweet method and text as argument. Save the result in a variable called response
response = client.create_tweet(text=tweet)
print(response)
config.py
# consumer secret
CONSUMER_SECRET_KEY = "YOUR SECRET KEY GOES HERE"
# consumer key
CONSUMER_KEY = "YOUR KEY GOES HERE"
# access token
ACCESS_TOKEN = "YOUR TOKEN GOES HERE"
# access token secret
ACCESS_TOKEN_SECRET = "YOUR TOKEN SECRET GOES HERE"
在我的终端,我运行了命令:python3 sendTweet.py
。为了检查是否成功,我前往 Twitter 找到了这条推文。
从 Copilot 获得最佳结果的关键是:
写清晰和具体的注释
一旦 Copilot 能够识别代码中的连续模式,就可以利用它
检查 Copilot 提供的替代建议
最近开始学着写 C++ 的代码,亲测在 Copilot 的帮助下,更容易上手写 C++。希望今年剩下的日子,也要继续保持学习的劲头呀!
那些能改变我们一生的道理,都不是别人教会的。
真正的读书,不是翻越纸张,而是被书改变。
我永远喜欢那些优秀又谦逊的人,他们明明拥有着吊打所有人的能力,却毫无优越感,对人温和得像傍晚的风,工作上坚定有主见,与人相处时又温柔自谦。是的,让自己优秀也许是天赋和努力,但能让周围人舒服那就是善良和有同理心,两者兼有,真的太难得了!