Skip to main content

FastAPI server that proxies OpenAI API endpoints using hexin_engine backend

Project description

Hexin Proxy Server

一个 FastAPI 服务器,提供 OpenAIAnthropic 兼容的 API 接口,通过代理 Hexin 后端服务来提供 AI 功能。

功能特性

  • Chat Completions API: 兼容 OpenAI 的聊天完成接口
  • Claude Messages API: 兼容 Anthropic Messages API,支持 Claude Code 和 Anthropic SDK
  • Responses API: 兼容 OpenAI 的推理响应接口 (支持 o3、o4-mini)
  • Embeddings API: 兼容 OpenAI 的文本嵌入接口
  • 模型列表: 支持列出可用的 AI 模型
  • 流式响应: 支持实时流式聊天响应和推理响应
  • 多模型支持: 支持多种大语言模型和嵌入模型

支持的接口

Chat Completions (OpenAI 格式)

  • POST /v1/chat/completions - 创建聊天完成
  • 支持流式和非流式响应
  • 支持工具调用和函数调用
  • 支持多种模型:GPT、Claude、Gemini、DeepSeek 等
  • 默认端口: 8777

Claude Messages API (Anthropic 格式)

  • POST /v1/messages - 创建消息(完全兼容 Anthropic SDK)
  • 支持流式和非流式响应
  • 支持多轮对话和 system 提示词
  • 可直接与 Claude CodeAnthropic SDK 集成
  • 默认端口: 8778
  • 📖 详细文档

Responses (推理响应)

  • POST /v1/responses - 创建推理响应 (专为 o3、o4-mini 等推理模型设计)
  • 支持流式和非流式响应
  • 支持推理配置 (effort: low/medium/high, summary: brief/detailed)
  • 返回详细的推理过程和结果

Embeddings

  • POST /v1/embeddings - 创建文本嵌入
  • 支持的模型:text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large
  • 支持单个和批量文本处理

Models

  • GET /v1/models - 列出可用模型
  • 返回聊天、推理和嵌入模型列表

快速开始

1. 安装依赖

pip install hexin-server --upgrade

或者本地安装

git clone https://github.com/LinXueyuanStdio/hexin-proxy-server.git
cd hexin-proxy-server
pip install -e .

2. 配置环境变量

cp .env.example .env

创建 .env 文件:

HITHINK_APP_ID=your_app_id
HITHINK_APP_SECRET=your_app_secret
HITHINK_APP_URL=your_app_url

3. 启动服务器

OpenAI 兼容服务器(默认端口 8777)

# 直接运行
python -m hexin_server

# 或者指定参数
python -m hexin_server --host 0.0.0.0 --port 8777 --reload

Claude Messages API 服务器(默认端口 8778)

# 直接运行
python -m hexin_server.claude

# 或者指定参数
python -m hexin_server.claude --port 8778 --reload

同时运行两个服务器

# 终端 1: OpenAI 兼容服务器
python -m hexin_server --port 8777

# 终端 2: Claude Messages API 服务器
python -m hexin_server.claude --port 8778

4. 测试接口

Chat Completions 示例(OpenAI 格式)

curl -X POST "http://localhost:8777/v1/chat/completions" \
  -H "Authorization: Bearer sk-fastapi-proxy-key-12345" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {"role": "user", "content": "Hello, how are you?"}
    ]
  }'

Claude Messages 示例(Anthropic 格式)

curl -X POST "http://localhost:8778/v1/messages" \
  -H "x-api-key: sk-fastapi-proxy-key-12345" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-sonnet-20240229",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "你好,请介绍一下你自己"}
    ]
  }'

Responses 推理示例

# 非流式推理响应
curl -X POST "http://localhost:8777/v1/responses" \
  -H "Authorization: Bearer sk-fastapi-proxy-key-12345" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "o3",
    "input": "估算下海水的总重量",
    "reasoning": {
      "effort": "medium",
      "summary": "detailed"
    }
  }'

# 流式推理响应
curl -X POST "http://localhost:8777/v1/responses" \
  -H "Authorization: Bearer sk-fastapi-proxy-key-12345" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "o3",
    "input": "估算下海水的总重量",
    "reasoning": {
      "effort": "medium",
      "summary": "detailed"
    },
    "stream": true
  }'

Embeddings 示例

curl -X POST "http://localhost:8777/v1/embeddings" \
  -H "Authorization: Bearer sk-fastapi-proxy-key-12345" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Hello, world!",
    "model": "text-embedding-ada-002"
  }'

使用 OpenAI 和 Anthropic 客户端库

OpenAI 格式 API

import openai

# 配置客户端
client = openai.OpenAI(
    api_key="sk-fastapi-proxy-key-12345",
    base_url="http://localhost:8777/v1"
)

# 聊天完成
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "user", "content": "Hello, how are you?"}
    ]
)

# 创建嵌入
embeddings = client.embeddings.create(
    model="text-embedding-ada-002",
    input="Hello, world!"
)

Anthropic Messages API

from anthropic import Anthropic

# 配置客户端
client = Anthropic(
    base_url="http://localhost:8778",
    api_key="sk-fastapi-proxy-key-12345",
)

# 创建消息
message = client.messages.create(
    model="claude-3-sonnet-20240229",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "你好,请介绍一下你自己。"}
    ]
)

print(message.content[0].text)

# 流式响应
with client.messages.stream(
    model="claude-3-sonnet-20240229",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "讲一个故事"}
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

推理响应 API

推理响应需要使用 requests 库,因为 OpenAI 客户端暂不支持 responses API:

import requests

response = requests.post(
    "http://localhost:8777/v1/responses",
    headers={
        "Authorization": "Bearer sk-fastapi-proxy-key-12345",
        "Content-Type": "application/json"
    },
    json={
        "model": "o3",
        "input": "估算下海水的总重量",
        "reasoning": {
            "effort": "medium",
            "summary": "detailed"
        }
    }
)

详细文档

项目结构

hexin-proxy-server/
├── hexin_server/
│   ├── __init__.py
│   ├── __main__.py          # OpenAI 兼容服务器 (端口 8777)
│   └── claude.py            # Claude Messages API 服务器 (端口 8778)
├── tests/
│   ├── test_embedding.py    # 嵌入接口测试
│   └── test_anthropic_sdk.py # Anthropic SDK 测试
├── test_openai_client.py    # OpenAI 客户端测试
├── test_responses.py        # 推理接口测试
├── check_server.py          # 服务器验证脚本
├── start_test_server.sh     # 服务器启动脚本
├── CLAUDE_MESSAGES_API.md   # Claude API 使用指南
├── CLAUDE_IMPLEMENTATION_SUMMARY.md # Claude 实现总结
├── RESPONSES_API.md         # 推理API使用指南
├── EMBEDDING_API.md         # 嵌入API使用指南
├── README.md
├── requirements.txt
└── .env.example

测试

项目包含多种测试脚本来验证功能:

# 测试嵌入接口
python tests/test_embedding.py

# 测试 Anthropic SDK(Claude Messages API)
python tests/test_anthropic_sdk.py

# 使用 OpenAI 标准库测试 (推荐)
python test_openai_client.py

# 基础响应接口测试
python test_responses.py

# 服务器状态检查
python check_server.py

OpenAI 标准库集成

推荐使用 test_openai_client.py,它提供了一个增强的 OpenAI 客户端,支持:

  • 标准 OpenAI APIs (chat, embeddings, models)
  • 自定义 responses API,采用 OpenAI 风格的接口
  • 流式和非流式响应支持
  • 一致的错误处理和响应格式
from test_openai_client import EnhancedOpenAIClient

client = EnhancedOpenAIClient(
    api_key="sk-fastapi-proxy-key-12345",
    base_url="http://localhost:8777/v1"
)

# 标准聊天完成
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}]
)

# 推理响应
response = client.create_response(
    model="o3",
    input_data="估算下海水的总重量",
    reasoning={"effort": "medium", "summary": "detailed"}
)

贡献

欢迎提交 Issue 和 Pull Request!

许可证

License file

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hexin_server-0.1.19.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hexin_server-0.1.19-py3-none-any.whl (25.2 kB view details)

Uploaded Python 3

File details

Details for the file hexin_server-0.1.19.tar.gz.

File metadata

  • Download URL: hexin_server-0.1.19.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.5 Darwin/25.2.0

File hashes

Hashes for hexin_server-0.1.19.tar.gz
Algorithm Hash digest
SHA256 da5e3bc0ed017ef75c34c925f2db426b9d7d00ff8b9debee9dc512b96d1445be
MD5 23e46cf2fe48673f16c3f63696c59803
BLAKE2b-256 48a08def7c87c9387b9a1fb404286e669bf34dd984e936b7c60b5a6a7a48e2fd

See more details on using hashes here.

File details

Details for the file hexin_server-0.1.19-py3-none-any.whl.

File metadata

  • Download URL: hexin_server-0.1.19-py3-none-any.whl
  • Upload date:
  • Size: 25.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.5 Darwin/25.2.0

File hashes

Hashes for hexin_server-0.1.19-py3-none-any.whl
Algorithm Hash digest
SHA256 70f1fafe5f9cf5078d94a98c7b31fe7f0857a4c0048c897c8c3f72d55fd3dfc9
MD5 de1826d0789956113c3ba305357bb62c
BLAKE2b-256 afef90ed687df2022c686a4e801ba0198cb5f0fe45c97950f3b7f6dbf08e3539

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page