這是使用OpenAI的GPT語言模型的電報聊天機器人(AI助手)。
值得注意的功能:
請繼續閱讀以獲取詳細的功能描述或跳到設置。
該機器人充當您的私人助理:
?向三歲的Apache Kafka解釋
? Apache Kafka就像一個大型郵箱,可幫助不同的玩具(計算機)彼此發送消息。當一個玩具有話要說時,它會在郵箱中輸入一條消息,而其他玩具可以將該消息帶出並閱讀。這樣,他們可以迅速交談並分享事情!
要允許其他用戶使用該機器人,請在telegram.usernames配置屬性中列出它們。
該機器人具有可怕的內存,因此不要指望它默認情況下記住任何聊天上下文。但是,您可以回答一個後續問題( Ctrl/Cmd + ↑ )。或者,使用加號符號跟進:
?昨天,我所有的麻煩似乎很遠
?聽起來您是在引用甲殼蟲樂隊的“昨天”。這是一首關於渴望和懷舊的經典歌曲。
? +誰寫的?
?甲殼蟲樂隊的保羅·麥卡特尼(Paul McCartney)撰寫了“昨天”。
可用命令:
/retry - 重試回答最後一個問題/help - 顯示幫助/version - 顯示機器人信息要重塑或添加最後一個問題,只需對其進行編輯。然後,機器人將回答更新的問題。
要從組中的機器人中獲得答案,請在回答問題中提及:
?我忘了誰在《權力的遊戲》中玩過拉姆西?
? ↳@pokitokibot幫助?拉姆齊·博爾頓(Ramsay Bolton)在《權力的遊戲》中是由伊旺·羅(Iwan Rheon)扮演的。
或直接提出問題:
? @pokitokibot誰在《權力的遊戲》中玩過拉姆西?
? Iwan Rheon在《權力的遊戲》中扮演拉姆齊·博爾頓。
要使機器人回复組成員,請在telegram.chat_ids配置屬性中列出組ID。否則,除非在telegram.usernames配置屬性中列出,否則該機器人將忽略小組成員的問題。
如果您不知道組ID,請在組中運行/version bot命令以找到它:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
...
如果您向“香草”詢問外部資源,它將幻覺或承認它無法訪問遠程內容:
? https://sqlime.org/employees.sql的內容是什麼?沒有假設。
?作為AI語言模型,我無法在Internet上訪問外部URL。
該機器人通過獲取遠程內容並將其饋送到模型來解決問題:
?名稱1 GO的主要功能1.23版本https://tip.golang.org/doc/go1.23要簡短!
? GO 1.23的主要功能是將“範圍優先”實驗納入標準語言功能,允許“範圍”循環中的“範圍”子句接受迭代器函數。
當前僅支持文本內容(文章,代碼,數據),而不支持PDF,圖像或音頻。
如果您不希望機器人訪問URL,請引用它:
? “ https://antonz.org/robots.txt”的確切內容
?我無法直接訪問外部網站。您可以通過訪問瀏覽器中的URL來檢查abots.txt文件的內容。
使用簡短命令節省時間,並要求機器人對您的問題進行特定的事情。例如,要求它使用!proofread命令校對寫作:
? !校對我可以寫Java programz
?修訂文本:“我可以編寫Java程序。”
進行的更改:
- 刪除了“具有”語法正確性的“有”; “可以”不需要“有”。
- 將“ Java”更正為“ Java”以進行適當的大寫,因為它是一個適當的名詞。
- 更改為“ programz”為“程序”,以進行正確的拼寫和清晰度。
有幾個內置捷徑:
bugfix修復了您的代碼。proofread修復您的寫作。translate將您的文字翻譯成英文。summarize給出了文本的兩個段落摘要。您可以添加自己的快捷方式。有關詳細信息,請參見config.example.yml 。
要為當前聊天設置自定義提示,請使用/prompt命令:
? /提示您是一個邪惡的天才。以邪惡的笑聲回答。
要返回默認提示,請使用/prompt reset 。
組聊天中的/prompt命令僅適用於Admins- telegram.admins屬性中列出的用戶。
使用/imagine命令使用OpenAI的DALL-E 3模型生成圖像:
? /想像一個新時代的曙光
? (美麗的圖片)
新時代的曙光
默認圖像大小為1024×1024 PX。其他支撐尺寸為1792×1024和1024×1792:
/想像一下1792×1024的晴天懶貓
圖像生成非常昂貴。默認情況下,僅適用於telegram.usernames中列出的用戶,而不是針對組成員。您可以使用imagine.enabled配置屬性更改此操作。
與機器人一起工作的便利是由小細節組成的。在某些情況下,它可以節省您的時間和精力。
假設您收到了同事的消息或在頻道上閱讀帖子,並想問一個問題。只需將消息轉發到機器人,然後回答它提出的澄清問題。
要詢問有關文檔的問題,請將其作為文件發送並在標題中寫入問題。該機器人將讀取文件內容並回答。當前僅支持文本內容(純文本,代碼,數據),而不支持PDF,圖像或音頻。發送多個文件也不支持。
有時,AI的答复超過了電報設置的最大消息長度。在這種情況下,機器人不會失敗或向您發送消息。相反,它將答案作為附加的Markdown文件發送。
要重塑或添加最後一個問題,請編輯它( ↑快捷方式)。機器人會注意到這一點,並回答澄清的問題。
使用/version命令打印有關當前聊天,機器人和AI模型的詳細信息:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
Bot information:
- id: 5930739038
- name: @pokitokibot
- version: 129
- usernames: 6 users
- admins: 1 users
- chat IDs: []
- access to messages: True
AI information:
- model: gpt-3.5-turbo
- history depth: 3
- imagine: True
- shortcuts: bugfix, proofread, summarize, translate
使用/config命令幾乎可以隨時更改任何設置,而無需重新啟動機器人。
telegram.usernames and telegram.chat_ids )。openai.model ),提示( openai.prompt )和params( openai.params )。imagine.enabled 。shortcuts )。要查看特定的配置屬性,請在/config之後放置其名稱:
/config telegram.usernames
/config openai.prompt
/config imagine.enabled
要更改特定的配置屬性,請在/config之後放置其名稱和值:
/config telegram.usernames ["alice", "bob", "cindy"]
/config openai.prompt "You are an evil AI bot"
/config imagine.enabled none
使用telegram.usernames(例如telegram.usernames的列表屬性時,您可以添加或刪除單個項目,而不是重新定義整個列表:
/config telegram.usernames +cindy
/config telegram.usernames -bob
/config命令僅適用於Admins- telegram.admins屬性中列出的用戶。
與機器人的大量討論大型討論可能導致大量使用OpenAI API。為了避免花費整個預算,請為conversation.message_limit配置屬性設置群體的消息限制。
您可以在一段時間內限制用戶的消息數。例如:
message_limit :
count : 10
period : hour message_limit :
count : 1
period : minute message_limit :
count : 30
period : day 獲取您的OpenAI API密鑰
從@botfather獲取電報機器人令牌
克隆到服務器的存儲庫:
git clone https://github.com/nalgeon/pokitoki.git將config.example.yml複製到config.yml並在此處指定您的令牌。將自己添加到telegram.usernames屬性中,否則該機器人將為所有人提供。
啟動機器人:
docker compose up --build --detach停止機器人:
docker compose stop將機器人更新為新版本:
docker compose stop
git pull
docker compose up --build --detach對於較舊的Docker發行版,請使用docker-compose代替docker compose 。
準備環境:
python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
準備配置和數據目錄:
cp config.example.yml config.yml
mkdir ./data
在config.yml中設置令牌和其他設置。
運行測試:
python -m unittest discover
啟動機器人:
python -m bot.bot
有關新功能和改進,請首先開放一個問題,以討論您想更改的內容。
請確保適當添加或更新測試。
使用黑色進行代碼格式和用於提交消息的常規提交。
有關功能歷史記錄,請參閱發行版。
最初基於chatgpt_telegram_bot,儘管這些項目差異很大。