外观
Poe
983字约3分钟
2025-04-28
基本使用
需要科学上网和订阅才能使用 API
Poe API 测试
使用官方提供的接口测试 API 功能
conda create -n llm_test python=3.11
conda activate llm_test
pip install fastapi-poe
API 转换
在使用常用工具时,经常需要转换为更通用的 OpenAI API 格式
安装
cd ~/github
git clone https://github.com/qingyanbaby/poe_2_openai.git
cd poe_2_openai
conda create -n p2o python=3.11
conda activate p2o
pip install -r requirements.txt
配置文件
nano .env
CUSTOM_TOKEN="poe-m"
SYSTEM_TOKEN="<api-key>"
MODEL_MAPPING='{
"claude-3.7": "Claude-3.7-Sonnet"
}'
PROXY_TYPE=http
PROXY_HOST=127.0.0.1
PROXY_PORT=10808
PROXY_USERNAME=
PROXY_PASSWORD=
nano run.py
port=11002
启动
sudo nano /etc/systemd/system/p2o.service
[Unit]
Description=POE to OpenAI service
After=network.target
[Service]
Type=simple
User=maynard
WorkingDirectory=/home/maynard/github/poe_2_openai
ExecStart=/home/maynard/miniconda3/envs/p2o/bin/python /home/maynard/github/poe_2_openai/run.py
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
首次
sudo systemctl enable p2o.service
sudo systemctl start p2o.service
修改后
sudo systemctl daemon-reload
sudo systemctl restart p2o.service
OpenAI API 测试
conda activate llm_test
pip install requests
pip install openai
完整测试参考
import requests
from openai import OpenAI
import fastapi_poe as fp
import asyncio
import json
from typing import Tuple
def get_api_key() -> Tuple[str, str, str]:
"""
获取API密钥
Args:
None
Returns:
Tuple[str, str, str]: para_key, poe_key, p2o_key
Raises:
None
"""
try:
with open("key.json", "r") as f:
key = json.load(f)
para_key = key["paratera_api_key"]
poe_key = key["poe_api_key"]
p2o_key = key["p2o_api_key"]
return para_key, poe_key, p2o_key
except Exception as e:
return "", "", ""
def test_para_1(para_key: str, content: str = "你好"):
"""
测试智算云API-requests方法
Args:
para_key: 智算云API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# API端点
url = "https://llmapi.paratera.com/v1/chat/completions"
# 密钥
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + para_key
}
# 请求体
data = {
"model": "DeepSeek-R1",
"messages": [
{"role": "user", "content": content}
]
}
# 发送请求
response = requests.post(url, headers=headers, data=json.dumps(data))
# 打印响应内容
print(response.json()["choices"][0]["message"]["content"])
def test_para_2(para_key: str, content: str = "你好"):
"""
测试智算云API-openai方法A
Args:
para_key: 智算云API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# 创建客户端
client = OpenAI(
api_key=para_key,
base_url="https://llmapi.paratera.com/v1/"
)
# 发送请求
response = client.chat.completions.create(
model="DeepSeek-R1",
messages=[
{"role": "user", "content": content}
]
)
# 打印响应内容
print(response.choices[0].message.content)
def test_para_3(para_key: str, content: str = "你好"):
"""
注意:最新方法,但智算云不支持
测试智算云API-openai方法B
Args:
para_key: 智算云API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# 创建客户端
client = OpenAI(
api_key=para_key,
base_url="https://llmapi.paratera.com/v1/"
)
# 发送请求
response = client.responses.create(
model="DeepSeek-R1",
instructions="你是专业编程助理",
input=content,
)
# 打印响应内容
print(response.output_text)
async def test_poe_1(poe_key: str, content: str = "你好"):
"""
测试POE API-官方异步方法
Args:
poe_key: POE API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# 创建客户端
message = fp.ProtocolMessage(role="user", content=content)
# 发送请求
response = ""
async for partial in fp.get_bot_response(
messages=[message],
bot_name="DeepSeek-R1",
api_key=poe_key,
):
response += partial.text
# 打印响应内容
print(response)
def test_poe_2(poe_key: str, content: str = "你好"):
"""
测试POE API-官方同步方法
Args:
poe_key: POE API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# 创建客户端
message = fp.ProtocolMessage(role="user", content=content)
# 发送请求
response_generator = fp.get_bot_response_sync(
messages=[message],
bot_name="DeepSeek-R1",
api_key=poe_key,
)
# 接收完整响应
response = ""
for partial in response_generator:
response += partial.text
# 打印响应内容
print(response)
def test_p2o_1(p2o_key: str, content: str = "你好"):
"""
测试P2O API-requests方法
Args:
p2o_key: P2O API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# API端点
url = "http://172.18.2.18:11002/v1/chat/completions"
# 密钥
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + p2o_key
}
# 请求体
data = {
"model": "DeepSeek-R1",
"messages": [
{"role": "user", "content": content}
]
}
# 发送请求
response = requests.post(url, headers=headers, data=json.dumps(data))
# 打印响应内容
print(response.json()["choices"][0]["message"]["content"])
def test_p2o_2(p2o_key: str, content: str = "你好"):
"""
测试P2O API-openai方法A
Args:
p2o_key: P2O API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# 创建客户端
client = OpenAI(
api_key=p2o_key,
base_url="http://172.18.2.18:11002/v1/"
)
# 发送请求
response = client.chat.completions.create(
model="DeepSeek-R1",
messages=[
{"role": "user", "content": content}
]
)
# 打印响应内容
print(response.choices[0].message.content)
def test_p2o_3(p2o_key: str, content: str = "你好"):
"""
注意:最新方法,但P2O不支持
测试P2O API-openai方法B
Args:
p2o_key: P2O API密钥
content: 输入文本
Returns:
None
Raises:
None
"""
# 创建客户端
client = OpenAI(
api_key=p2o_key,
base_url="http://172.18.2.18:11002/v1/"
)
# 发送请求
response = client.responses.create(
model="DeepSeek-R1",
instructions="你是专业编程助理",
input=content,
)
# 打印响应内容
print(response.output_text)
if __name__ == "__main__":
para_key, poe_key, p2o_key = get_api_key()
if para_key == "":
print("请配置智算云密钥")
else:
test_para_1(para_key)
test_para_2(para_key)
# test_para_3(para_key)
if poe_key == "":
print("请配置POE密钥")
else:
asyncio.run(test_poe_1(poe_key))
test_poe_2(poe_key)
if p2o_key == "":
print("请配置P2O密钥")
else:
test_p2o_1(p2o_key)
test_p2o_2(p2o_key)
# test_p2o_3(p2o_key)