开发状态 :: 7 - 非活跃
[通知]
请前往 Gemini API
这是一个非官方的Python封装库,python-gemini-api,通过逆向工程操作,利用cookie值与Google Gemini进行交互,适用于那些经常遇到身份验证问题或无法通过Google身份验证进行身份验证的用户。
- Gemini API GitHub: https://github.com/dsdanielpark/Gemini-API
- PyPi: https://pypi.org/project/python-gemini-api/
与Antonio Cheong成功合作。
安装
pip install python-gemini-api
pip install git+https://github.com/dsdanielpark/Gemini-API.git
如需更新版本,请使用以下命令:
pip install -q -U python-gemini-api
对Bard API项目的反思 https://github.com/dsdanielpark/Bard-API/issues/289
Google - Bard API
该Python包通过cookie值返回Google Bard的响应。
请谨慎使用并负责使用此包。此Python包是_非官方的_。
我参考了这个GitHub仓库(github.com/acheong08/Bard),其中逆向工程了Bard的推理过程。使用__Secure-1PSID
,你可以向Google Bard提问并获得回答。请注意,bardapi并不是一个免费服务,而是为开发者在Google Bard API的开发和发布延迟的情况下,测试某些功能而提供的工具。它采用了轻量级的结构,能够轻松适应官方API的出现。因此,我强烈不建议将其用于任何其他目的。如果你有可靠的官方PaLM-2 API或Google生成式AI API的访问权限,请用相应的官方代码替换提供的响应。详情请查看https://github.com/dsdanielpark/Bard-API/issues/262。
什么是Google Bard?
Bard是由Google开发的一种对话生成式人工智能聊天机器人,最初基于LaMDA系列的大型语言模型(LLM),后来基于PaLM LLM。请查看官方文件了解关于Bard的更新,包括可用地区和语言。
安装
$ pip install bardapi
$ pip install git+https://github.com/dsdanielpark/Bard-API.git
由于某些依赖包与64位Windows(操作系统)不兼容,我们发布了一个轻量级的alpha版本,仅返回简单请求的响应。该版本是pypi 0.1.18
版本的延续,保持了轻量和简单的功能。详情请参阅alpha-release github分支。
$ pip install bardapi==0.1.23a
身份验证
警告 请勿暴露
__Secure-1PSID
。仅供测试目的使用;避免直接应用。Cookie值会定期更改(每15-20分钟)。频繁的会话更改可能会暂时阻止访问;无头模式具有挑战性。速率限制经常变化。如果cookie更改,请注销你的Google账户,关闭浏览器,并输入新的cookie值。或者手动重置cookie以获得新值。详情请查看常见问题和问题页面。
- 访问 https://gemini.google.com/
- 按F12打开控制台
- 会话:应用程序 → Cookies → 复制
__Secure-1PSID
cookie的值。或者尝试使用SIDCC
作为令牌。
请注意,虽然我将__Secure-1PSID
或SIDCC
值称为API密钥方便起见,但它并不是官方提供的API密钥。Cookie值频繁变化。如果出现错误,请再次验证该值。大多数错误发生在输入无效的cookie值时。
如果需要设置多个cookie值:
- 多Cookie Bard - 在确认某些国家需要多个cookie值才能可靠接收响应后,我将其部署用于测试目的。请调试并创建pull request。
用法
简单用法
from bardapi import Bard
token = 'xxxxxxx'
bard = Bard(token=token)
bard.get_answer("告诉我和我的同龄人喜欢的新裤子")['content']
或者你可以这样使用
from bardapi import Bard
import os
os.environ['_BARD_API_KEY'] = "xxxxxxx"
Bard().get_answer("告诉我和我的同龄人喜欢的新裤子")['content']
获取响应字典
import bardapi
# 设置你的__Secure-1PSID值作为密钥
token = 'xxxxxxx'
# 设置你的输入
Bard = Bard(token='xxxxxxx', proxies=proxies, timeout=30)
bard.get_answer("告诉我关于我和我的同龄人喜欢的新裤子(NewJeans)")['content']
### 可重用的会话对象
您可以使用可重用的会话继续对话。不过,这个功能有限,且作为一个包级功能,维护conversation_id和上下文并不容易。您可以尝试像其他LLM服务一样,通过向数据库传递一些过去对话的摘要来保持对话的一致性。
```python
from bardapi import Bard
import requests
# import os
# os.environ['_BARD_API_KEY'] = 'xxxxxxx'
token = 'xxxxxxx'
session = requests.Session()
session.headers = {
"Host": "gemini.google.com",
"X-Same-Domain": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
"Origin": "https://gemini.google.com",
"Referer": "https://gemini.google.com/",
}
# session.cookies.set("__Secure-1PSID", os.getenv("_BARD_API_KEY"))
session.cookies.set("__Secure-1PSID", token)
bard = Bard(token=token, session=session, timeout=30)
bard.get_answer("告诉我关于我和我的同龄人喜欢的新裤子(NewJeans)")['content']
# 继续对话而不需要设置新的会话
bard.get_answer("我上一个问题是什么?")['content']
异步Bard代码(点击展开)
from httpx import AsyncClient
from bardapi import BardAsync
import os
# 取消注释并根据需要设置您的API密钥
# os.environ['_BARD_API_KEY'] = 'xxxxxxx'
token = 'xxxxxxx' # 使用您的实际token替换
SESSION_HEADERS = {
"Host": "gemini.google.com",
"X-Same-Domain": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
"Origin": "https://gemini.google.com",
"Referer": "https://gemini.google.com/",
}
timeout = 30 # 示例超时
proxies = {} # 根据需要替换您的代理
client = AsyncClient(
http2=True,
headers=SESSION_HEADERS,
cookies={"__Secure-1PSID": token},
timeout=timeout,
proxies=proxies,
)
bard_async = BardAsync(token=token, client=client)
# 获取答案的异步函数
async def get_bard_answer(question):
await bard_async.async_setup() # 确保已完成异步设置
return await bard_async.get_answer(question)
response = await get_bard_answer("告诉我关于我和我的同龄人喜欢的新裤子(NewJeans)")
print(response['content'])
自动Cookie Bard
使用browser_cookie3从所有浏览器中提取__Secure-1PSID
cookie,然后我们可以在不传递token的情况下使用API。不过,仍然存在不完整的依赖包和各种变量,因此请在以下GitHub Issues中寻求帮助或调整您的浏览器版本。
建议保持浏览器开启。
from bardapi import Bard
bard = Bard(token_from_browser=True)
response = bard.get_answer("你喜欢饼干吗?")
print(response['content'])
Bard ask_about_image
方法
可能无法使用,因为仅对某些账户、地区和其他限制开放。 作为一个实验性功能,您可以通过图像提问。不过,这个功能仅对在Bard的网络用户界面中具有图像上传功能的账户开放。
from bardapi import Bard
bard = Bard(token='xxxxxxx')
image = open('image.jpg', 'rb').read() # 支持(jpeg, png, webp)格式。
bard_answer = bard.ask_about_image('这张图片中有什么?', image)
print(bard_answer['content'])
Bard的语音合成(TTS)
根据Google的政策,企业用户和高流量用户可能会受到账户限制。对于其他用途,请使用官方Google Cloud API。 所有代码均由用户自行负责,并且务必查阅Google的官方服务和政策。此外,本存储库中的代码基于MIT许可证提供,并不承担任何法律责任,包括明示或暗示的法律责任。
from bardapi import Bard
bard = Bard(token='xxxxxxx')
audio = bard.speech('你好,我是Bard!今天我能为您做些什么?')
with open("speech.ogg", "wb") as f:
f.write(bytes(audio['audio']))
更多功能
从版本0.1.18
开始,BardAPI的GitHub版本将与PyPI版本同步并同时发布。不过,仍然可以使用正在进行QA的GitHub版本。
$ pip install git+https://github.com/dsdanielpark/Bard-API.git
- 多Cookie Bard
- 自动Cookie Bard
- Bard的语音合成(TTS)
- 多语言Bard API
- 获取图片链接
- ChatBard
- 导出对话
- 导出代码到Repl.it
- 执行从Bard响应中收到的Python代码
- 异步使用Bard
- Bard Cookies
- 修复对话ID(修复上下文)
- Max_token, Max_sentences
- 翻译成另一种编程语言
你需要的只是Amazing Bard Prompts!
- Google Bard的有用提示
Python包hf-transllm
如果您想舒适地使用根据Apache License(允许免费商业用途)发布的
多种语言
的开源LLM模型,您可以尝试使用hf-transllm包。hf-transllm还支持存储在hugging face仓库中的多语言推理。
hf-transllm示例代码
如果由于政策限制,Google包不再可用,以下是一个使用英语和多语言开源语言模型(LLM)的简单示例代码。
用法
对于由Hugging Face提供的解码器模型,您可以通过简单的方式使用它们,或者覆盖推理方法。您可以在[此链接
访问 Bard API 包中的 Gemini Pro
Bard API 从 Google BardGemini 的官方网站 获取响应,允许你接收与网站相同的响应。因此,如果 Gemini 的答案在网上可用,你也可以通过 Bard API 访问 Gemini。然而,需要注意的是,响应可能也来自其他模型,不仅限于 Gemini Pro 或 Ultra。
- 虽然 PaLM2 API 可用,但没有官方的 Bard API 或 Gemini 的早期访问/等待名单。
- Google 的 PaLM2 API 与 Bard 不同,Bard 的某些方面更为优越。
- 有人推测,经过专家评审后,Bard 高级阵容可能会在 2024 年提供官方 API。
- Gemini 和之前的生成 AI 模型响应在 Bard Web 上随机提供。
- Bard API 具有不完善的扩展功能(例如
ask_about_image
),偶尔展示 Gemini 的能力。这种行为可能因地区、语言或 Google 帐户而异。 - 更多信息请参见 FAQ。
更多关于 Gemini 的信息:
Google PaLM
在 https://makersuite.google.com/app/prompts/new_text 尝试演示。
你是谁?
>> 我由 PaLM 2 提供支持,即 Pathways 语言模型 2,这是 Google AI 的一个大型语言模型。
Google 生成 AI
- 官方页面:https://blog.google/technology/ai/google-palm-2-ai-large-language-model/
- GitHub:https://github.com/GoogleCloudPlatform/generative-ai
- 尝试演示:https://makersuite.google.com/app/prompts/new_text
- 官方库:https://makersuite.google.com/app/library
- 获取 API 密钥:https://makersuite.google.com/app/apikey
- 快速入门教程:https://developers.generativeai.google/tutorials/text_quickstart
快速入门
$ pip install -q google-generativeai
import pprint
import google.generativeai as palm
palm.configure(api_key='YOUR_API_KEY')
models = [m for m in palm.list_models() if 'generateText' in m.supported_generation_methods]
model = models[0].name
print(model)
prompt = "你是谁?"
completion = palm.generate_text(
model=model,
prompt=prompt,
temperature=0,
# 响应的最大长度
max_output_tokens=800,
)
print(completion.result)
赞助商
使用数据抓取来训练你的 AI 模型。
- 易于使用的 API 抓取和抓取 数百万个网站
- 使用 crawlbase 进行高效的数据提取 (https://crawlbase.com/generative-ai-data?utm_source=github_ad&utm_medium=social&utm_campaign=bard_api) 用于你的 LLMs
- 平均 成功率:98%
- 正常运行时间保证:99.9%
- 简单文档 可以在几分钟内开始使用
- 异步 抓取 API 如果你需要大量数据
- GDPR 和 CCPA 合规
被 70k+ 开发者使用。
常见问题
在创建新问题之前,请检查常见问题和已开放的问题以查看类似问题。重复的问题将保留为开放问题。过多的请求可能会触发临时账户封锁 (HTTP 429)。请保持适当的间隔,使用类似 sleep 的函数来避免速率限制。政策可能因国家和语言而异,因此所有用户都可能通过 API 面临临时或永久性错误。
脚本
在脚本 文件夹 中,我发布了一个脚本来帮助你比较 OpenAI-ChatGPT、Microsoft-EdgeGPT 和 Google-Bard。希望它们能帮助更多开发者。
贡献者
我们要对所有贡献者表达诚挚的感谢。
许可证
MIT
我们不承担任何法律责任;更多信息请参见自述文件底部。我们只希望你给我和 他们 一个星。这个项目是个人的,并且不隶属于或得到 Google 的认可。建议使用 Google 的官方 API。
MIT 许可证 (MIT)
版权 (c) 2023 Minwoo Park
特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人,无限制地使用本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件的副本,并允许获得本软件的人员在以下条件下这样做:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不作任何形式的明示或暗示保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权持有人均不对因使用本软件或与本软件的使用或其他交易有关的任何索赔、损害或其他责任承担任何责任,无论是在合同诉讼、侵权诉讼或其他情况下。
服务政策变动:Bard 和 Google 的动态
Bard 的服务状态和 Google 的 API 接口在不断变化。目前回复数量有限,但某些用户,如使用 VPN 或代理服务器的用户,报告消息上限略高。适应性在应对这些动态服务政策时至关重要。请注意,本包使用的 Cookie 值不是官方的 API 值。
错误和问题
对任何新功能或错误报告深表感谢。非常感谢您对代码的宝贵反馈。
联系方式
参考
[1] https://github.com/acheong08/Bard
警告 重要通知 用户对使用 BardAPI 包承担所有法律责任。这个 Python 包只是为了让开发者更容易访问 Google Bard。用户有责任管理数据并适当使用该包。有关更多信息,请参阅 Google Bard 官方文档。
警告 注意事项 这个 Python 包不是官方的 Google 包或 API 服务。它不隶属于 Google 并使用 Google 账户 Cookie,这意味着过度或商业使用可能会导致你的 Google 账户受到限制。创建该包是为了支持开发者测试功能,因为官方 Google 包存在延迟。然而,不应滥用该包。请谨慎操作并参阅自述文件以获取更多信息。
版权 (c) 2023 MinWoo Park, 韩国