Skip to content

Commit

Permalink
gemini 支持传入自定义域名 (#485)
Browse files Browse the repository at this point in the history
* gemini 支持传入自定义域名

* 还原误改的readme格式

* fix: lint

Signed-off-by: yihong0618 <[email protected]>

---------

Signed-off-by: yihong0618 <[email protected]>
Co-authored-by: yihong <[email protected]>
  • Loading branch information
iazrael and yihong0618 authored Apr 19, 2024
1 parent 5c7c9ec commit 547ea38
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 9 deletions.
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ xiaogpt --hardware LX06 --mute_xiaoai --use_chatgpt_api
xiaogpt --hardware LX06 --mute_xiaoai --stream
# 如果你想使用 google 的 gemini
xiaogpt --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key}
# 如果你想使用自己的 google gemini 服务
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key} --gemini_api_domain ${gemini_api_domain}
# 如果你想使用阿里的通义千问
xiaogpt --hardware LX06 --mute_xiaoai --use_qwen --qen_key ${qwen_key}
# 如果你想用 edge-tts
Expand Down Expand Up @@ -101,6 +103,8 @@ python3 xiaogpt.py --hardware LX06 --mute_xiaoai --stream
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_glm --glm_key ${glm_key}
# 如果你想使用 google 的 gemini
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key}
# 如果你想使用自己的 google gemini 服务
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key} --gemini_api_domain ${gemini_api_domain}
# 如果你想使用阿里的通义千问
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_qwen --qen_key ${qwen_key}
# 如果你想使用 LangChain+SerpApi 实现上网检索或其他本地服务(目前仅支持 stream 模式)
Expand Down Expand Up @@ -155,6 +159,7 @@ ChatGLM [文档](http://open.bigmodel.cn/doc/api#chatglm_130b)
| serpapi_api_key | serpapi的key 参考 [SerpAPI](https://serpapi.com/) | | |
| glm_key | chatglm 的 apikey | | |
| gemini_key | gemini 的 apikey [参考](https://makersuite.google.com/app/apikey) | | |
| gemini_api_domain | gemini 的自定义域名 [参考](https://github.com/antergone/palm-netlify-proxy) | |
| qwen_key | qwen 的 apikey [参考](https://help.aliyun.com/zh/dashscope/developer-reference/api-details) | | |
| cookie | 小爱账户cookie (如果用上面密码登录可以不填) | | |
| mi_did | 设备did | | |
Expand All @@ -175,11 +180,9 @@ ChatGLM [文档](http://open.bigmodel.cn/doc/api#chatglm_130b)
| bing_cookie_path | NewBing使用的cookie路径,参考[这里]获取 | 也可通过环境变量 `COOKIE_FILE` 设置 | |
| bing_cookies | NewBing使用的cookie字典,参考[这里]获取 | | |
| deployment_id | Azure OpenAI 服务的 deployment ID | 参考这个[如何找到deployment_id](https://github.com/yihong0618/xiaogpt/issues/347#issuecomment-1784410784) | |
| api_base | 如果需要替换默认的api,或者使用Azure OpenAI 服务 | 例如:`https://abc-def.openai.azure.com/` | |
| api_base | 如果需要替换默认的api,或者使用Azure OpenAI 服务 | 例如:`https://abc-def.openai.azure.com/` |
| volc_access_key | 火山引擎的 access key 请在[这里](https://console.volcengine.com/iam/keymanage/)获取 | | |
| volc_secret_key | 火山引擎的 secret key 请在[这里](https://console.volcengine.com/iam/keymanage/)获取 | | |


[这里]: https://github.com/acheong08/EdgeGPT#getting-authentication-required

## 注意
Expand Down
1 change: 1 addition & 0 deletions xiao_config.json.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"openai_key": "",
"glm_key": "",
"gemini_key": "",
"gemini_api_domain": "",
"qwen_key": "",
"serpapi_api_key": "",
"cookie": "",
Expand Down
30 changes: 24 additions & 6 deletions xiaogpt/bot/gemini_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"temperature": 0.7,
"top_p": 1,
"top_k": 1,
"max_output_tokens": 2048,
"max_output_tokens": 4096,
}

safety_settings = [
Expand All @@ -32,10 +32,26 @@
class GeminiBot(ChatHistoryMixin, BaseBot):
name = "Gemini"

def __init__(self, gemini_key: str) -> None:
def __init__(self, gemini_key: str, gemini_api_domain: str) -> None:
import google.generativeai as genai

genai.configure(api_key=gemini_key)
from google.auth import api_key

credentials = api_key.Credentials(gemini_key)
if len(gemini_api_domain) > 0:
print("Use custom gemini_api_domain: " + gemini_api_domain)
credentials._universe_domain = gemini_api_domain
genai.configure(
transport="rest",
credentials=credentials,
client_options={
"api_endpoint": "https://" + gemini_api_domain,
"universe_domain": gemini_api_domain,
},
)
else:
genai.configure(api_key=gemini_key)

self.history = []
model = genai.GenerativeModel(
model_name="gemini-pro",
Expand All @@ -46,11 +62,13 @@ def __init__(self, gemini_key: str) -> None:

@classmethod
def from_config(cls, config):
return cls(gemini_key=config.gemini_key)
return cls(
gemini_key=config.gemini_key, gemini_api_domain=config.gemini_api_domain
)

async def ask(self, query, **options):
self.convo.send_message(query)
message = self.convo.last.text.strip()
response = self.convo.send_message(query)
message = response.text.strip()
print(message)
if len(self.convo.history) > 10:
self.convo.history = self.convo.history[2:]
Expand Down
5 changes: 5 additions & 0 deletions xiaogpt/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ def main():
dest="gemini_key",
help="gemini api key",
)
parser.add_argument(
"--gemini_api_domain",
dest="gemini_api_domain",
help="custom gemini api domain",
)
parser.add_argument(
"--qwen_key",
dest="qwen_key",
Expand Down
3 changes: 3 additions & 0 deletions xiaogpt/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ class Config:
gemini_key: str = os.getenv("GEMINI_KEY", "") # keep the old rule
qwen_key: str = os.getenv("DASHSCOPE_API_KEY", "") # keep the old rule
serpapi_api_key: str = os.getenv("SERPAPI_API_KEY", "")
gemini_api_domain: str = os.getenv(
"GEMINI_API_DOMAIN", ""
) # 自行部署的 Google Gemini 代理
volc_access_key: str = os.getenv("VOLC_ACCESS_KEY", "")
volc_secret_key: str = os.getenv("VOLC_SECRET_KEY", "")
proxy: str | None = None
Expand Down

0 comments on commit 547ea38

Please sign in to comment.