前段时间我在一篇文章中[6]谈到了使用OpenAI提供的库来访问ChatGPT[3]的尝试。与此同时,Google也推出了类似的解决方案,名为Bard[2],它基于Google自家开发的语言模型PaLM。同样,可以使用一个库通过Python代码进行查询。
名称和缩写说明
首先需要澄清一些术语和缩写的含义:
- LLM(Large Language Model):一种设计用于理解和生成连贯且上下文相关文本的人工智能模型,广泛应用于自然语言处理任务中,能够根据文本输入生成文本输出。
- PaLM 2(Pathways Language Model):Google开发的一系列大型语言模型(LLM),相当于OpenAI的GPT-3.5或GPT-4。

- Bard:一个基于PaLM的聊天机器人,通过网页界面回答用户提问。
- ChatGPT:一个基于GPT的聊天机器人,通过网页界面回答用户提问。
- OpenAI:开发了聊天机器人ChatGPT及语言模型GPT-*的公司。
- Google:开发了聊天机器人Bard及语言模型PaLM *的公司。
因此,PaLM和GPT是两种不同的LLM实现,分别被Bard(Google)和ChatGPT(OpenAI)使用。
AI和LLM如何帮助程序员
本文参考了由DeepLearning.ai提供、Andrew Ng和Laurence Moroney主讲的迷你课程,课程名为“Pair Programming with a Large Language Model”,聚焦于AI如何帮助开发者提升日常工作效率。
LLM可以用于以下目的:
- 改进现有代码:可以提供一个函数,询问是否有更好的等效写法。示例提示:“有没有更好的方法用Python写这个函数?<函数>”。
- 简化代码:请求对代码进行代码审查并简化。示例提示:“能否简化这段用于创建对象列表的Python代码?<示例代码>”。
- 编写测试:请求为类和函数创建单元测试。示例提示:“你能为这段Python代码写单元测试吗?<示例代码>”。
- 提升代码效率:请求审查代码,找出并删除无用或低效部分。示例提示:“你能让这段Python代码更高效吗?<示例代码>”。
- 查找错误:当代码出错或崩溃时,请求帮助定位bug。示例提示:“你能帮我调试这段代码吗?<示例代码>”。
- 解释和注释代码:当处理旧代码或他人代码时,帮助理解代码。示例提示:“你能逐行解释这段代码的作用吗?<示例代码>”。
- 编写技术文档:编写技术文档是一项枯燥工作,也可以请求帮助。示例提示:“你能为这段Python代码写技术文档吗?<示例代码>”。
- 实现算法:请求编写执行特定任务的算法。示例提示:“写一段Python代码,遍历列表并打印所有元素”。
以上只是使用PaLM进行编程时的一些示例。显然,所有主流编程语言都支持,不仅限于Python。
库的使用示例
下面是课程[1]中的示例,这次我没有创建自定义示例的代码仓库:
#Step 1: Install the library. # pip install -q google.generativeai
#Step 2: Get the right model. from utils import get_api_key import os import google.generativeai as palm from google.api_core import client_options as client_options_lib
#Step 3: Configure the library and set the personal key. palm.configure( api_key=get_api_key(), transport="rest", client_options=client_options_lib.ClientOptions( api_endpoint=os.getenv("GOOGLE_API_BASE"), ) ) #Step 5: choose the right model.
models = [m for m in palm.list_models()
if 'generateText'
in m.supported_generation_methods] model_bison = models[0]
#Step 6: Define a wrapper to retry if a call fails.
from google.api_core import retry
@retry.Retry()
def generate_text(prompt, model=model_bison, temperature=0.0):
return palm.generate_text(prompt=prompt, model=model, temperature=temperature)
#Step 7: Define the prompt.
prompt = "Show me how to iterate across a list in Python."
#Step 8: Generate the response and print it.
completion = generate_text(prompt)
print(completion.result)
结果如下:

使用库的步骤
使用PaLM不是免费的。要在本地运行上面代码,需完成以下步骤:
- 注册Google Cloud账户[4]
- 添加信用卡作为付款方式。
- 创建项目。
- 为该项目启用Generative Language API库。
- 创建API密钥。

- 将生成的密钥设置到环境变量:GOOGLE_API_BASE。
- 运行前文代码。
注意:务必尽可能保护好生成的密钥,防止泄露和未经授权的使用。建议启用警报和消费限额。

思考
程序员一直在寻找工具,以提升生产力,编写更优质、更高效、无bug且易读的代码。
人工智能和LLM技术的兴起并非威胁,而是加速和简化工作的机会。许多枯燥的任务可以借助这些工具简化,比如定位bug、理解代码和开发单元测试。
然而,不能盲目复制粘贴AI生成的代码,必须经过测试和验证,因为它可能包含错误、幻觉或潜在风险。这意味着AI可以辅助工作,但需谨慎使用。
AI输出的质量高度依赖于输入提示的质量,而提示的质量又取决于程序员的能力。俗话说“垃圾进,垃圾出”永远适用。
最后,由于AI的训练方式和设计,生成的结果通常是“中规中矩”的解决方案,即对已有资料或教程的再加工。因此,原创且富有创造力的解决方案仍需依赖天才且富有创造力的人类程序员。
来源和参考
- [1] 课程“Pair Programming with a Large Language Model”,由Andrew Ng和Laurence Moroney主讲。
- [2] Bard,Google的聊天机器人。
- [3] ChatGPT,OpenAI的聊天机器人。
- [4] Google Cloud Platform。
- [5] Introducing PaLM 2, Google’s next generation large language model,Google Research发布。
- [6] Interrogare ChatGPT con Python,发表于claudiobattaglino.it。
*** 本文为自动翻译,使用n8n和OpenAI完成。

