გადასვლა შინაარსზე
დაშიფრული, Tor და I2P endpoint-ები

დაშიფრული, Tor და I2P endpoint-ები

API ასევე გამოქვეყნებულია როგორც Tor onion სერვისი და I2P eepsite. იგივე მარშრუტები, იგივე გასაღები; იცვლება მხოლოდ base URL და პროქსი.

Base URL-ები

ოთხი მისამართი ერთსა და იმავე API-მდე მიდის. გამოიყენეთ ის, რომელიც თქვენს ქსელს ერგება, იმავე API გასაღებითა და იმავე მოთხოვნებით.

ქსელი Base URL როგორ მიაღწევთ
ღია ვები https://api.shannon-ai.com/v1 პირდაპირ, HTTPS-ით.
დაშიფრული სარკე https://api-encrypted.shannon-ai.com/v1 პირდაპირ, HTTPS-ით. იგივე API-ის მეორე ჰოსტის სახელი.
Tor (onion სერვისი) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Tor კლიენტის მეშვეობით: SOCKS5 პროქსი, ნაგულისხმევად 127.0.0.1:9050-ზე.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 I2P როუტერის მეშვეობით: HTTP პროქსი, ნაგულისხმევად 127.0.0.1:4444-ზე.
  • OpenAI SDK იღებს base URL-ს ისე, როგორც ნაჩვენებია, /v1-ით. Anthropic SDK იღებს მას /v1-ის გარეშე.
  • მისამართის შესამოწმებლად წაიკითხეთ https://api.shannon-ai.com-ის პასუხის სათაურები: Onion-Location onion მისამართს შეიცავს, X-I2P-Location კი I2P მისამართს. onion მისამართი იწყება shannon-ით.

რომელი მარშრუტები მუშაობს

ყოველი /v1 მარშრუტი პასუხობს ოთხივე მისამართზე:

  • POST /v1/chat/completions
  • POST /v1/responses
  • POST /v1/messages
  • POST /v1/messages/count_tokens
  • POST /v1/tokenize
  • GET /v1/models

GET /v1/models-ს გასაღები არ სჭირდება, ამიტომ ის სწრაფი ტესტია იმისა, რომ თქვენი პროქსი API-მდე აღწევს.

რა არის იგივე და რა განსხვავდება

პუნქტი იგივეა? დეტალი
მარშრუტები, მოთხოვნის ველები, პასუხები, შეცდომები იგივე ყველა მისამართზე ერთნაირია. არც ერთი მარშრუტი ჰოსტის სახელის მიხედვით სხვაგვარად არ იქცევა.
API გასაღები იგივე ერთი გასაღები ყველა მისამართზე მუშაობს, როგორც Authorization: Bearer ან x-api-key. cookie-ები /v1-ზე არასოდეს იკითხება.
ბალანსი და ლიმიტები იგივე იგივე ბალანსი და წუთში 120 მოთხოვნის იგივე ლიმიტი. ორივე ანგარიშის მიხედვით ითვლება და არა მისამართის მიხედვით.
მოთხოვნის ზომა იგივე მოთხოვნის სხეულზე 32 MiB-მდე.
სქემა განსხვავდება https:// ღია ვებში და სარკეზე. http:// .onion და .b32.i2p მისამართებზე, სადაც თავად ქსელი აშიფრავს კავშირს ბოლოდან ბოლომდე.
პროქსი განსხვავდება ღია ვებში არა. Tor-ისთვის SOCKS5 პროქსი, I2P-სთვის HTTP პროქსი. სახელი პროქსიმ უნდა გადაწყვიტოს და არა თქვენმა მანქანამ.
სიჩქარე განსხვავდება ორივე ქსელი ყოველ ბაიტს დაყოვნებას მატებს. I2P ორიდან უფრო ნელია.

ბალანსი და ლიმიტები ცალკე გვერდზეა აღწერილი. ლიმიტები და ბალანსი

cURL Tor-ით

გაუშვით Tor კლიენტი თქვენს მანქანაზე. ის გთავაზობთ SOCKS5 პროქსის 127.0.0.1:9050-ზე. --socks5-hostname .onion სახელს ამ პროქსის გადასცემს.

cURL · Tor
# 1. Is the onion service reachable? No key needed.
curl --socks5-hostname 127.0.0.1:9050 http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1/models

# 2. A streamed chat call. -N prints the stream as it arrives.
curl -N --socks5-hostname 127.0.0.1:9050 http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "stream": true,
    "messages": [{"role": "user", "content": "Hello over Tor"}]
  }'

cURL I2P-ით

გაუშვით I2P როუტერი თქვენს მანქანაზე. ის გთავაზობთ HTTP პროქსის 127.0.0.1:4444-ზე, რომელიც .b32.i2p სახელს უცვლელად იღებს.

cURL · I2P
# 1. Is the eepsite reachable? No key needed.
curl --proxy http://127.0.0.1:4444 http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1/models

# 2. A streamed chat call.
curl -N --proxy http://127.0.0.1:4444 http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "stream": true,
    "messages": [{"role": "user", "content": "Hello over I2P"}]
  }'

SDK-ის base URL

SDK-ს ორი ცვლილება სჭირდება: ქსელის base URL და HTTP კლიენტი, რომელიც პროქსიში გადის. Python-ში ორივე ოფიციალური SDK იღებს httpx კლიენტს. SOCKS პროქსისთვის დააინსტალირეთ httpx[socks].

# pip install openai "httpx[socks]"
import httpx
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1",
    http_client=httpx.Client(proxy="socks5h://127.0.0.1:9050", timeout=600),
)

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello over Tor"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

სტრიმინგი ორივე ქსელზე მუშაობს. სანამ სტრიმი ღიაა და მოდელს გასაგზავნი ჯერ არაფერი აქვს, API keep-alive-ს აგზავნის, რათა კავშირი პროქსის ან თქვენი კლიენტისთვის მკვდარი არ ჩანდეს.

Endpoint Keep-alive გახსნილ სტრიმზე ვისთვის იგზავნება
/v1/chat/completions კომენტარის ხაზი (იწყება :-ით) ყოველ 15 წამში. ყველა მოდელი
/v1/messages event: ping ან კომენტარის ხაზი ყოველ 15 წამში. ყველა მოდელი
/v1/responses კომენტარის ხაზი ყოველ 15 წამში. Hosted open-weight მოდელები
  • გაგზავნეთ "stream": true. სტრიმით მიღებული პასუხი მოსვლას იწყებს, როგორც კი მოდელი წერს, ხოლო keep-alive აჩვენებს, რომ მოთხოვნა ჯერ კიდევ მუშავდება. სტრიმის გარეშე პასუხი არაფერს აგზავნის, სანამ მთელი პასუხი მზად არ იქნება.
  • კლიენტს გრძელი read timeout მიეცით. მაგალითები 600 წამს იყენებენ. 15 წამზე მოკლე timeout-მა შეიძლება სტრიმი ორ keep-alive-ს შორის გაწყვიტოს.
  • თქვენმა SSE მკითხველმა კომენტარის ხაზები და ping მოვლენები გამოტოვოს. SDK-ები ამას უკვე აკეთებენ.
  • მოთხოვნას კავშირის გაწყვეტისთანავე ნუ გაგზავნით ხელახლა. მოთხოვნა, რომელიც API-მდე მივიდა, ბოლომდე სრულდება და ითვლება, მაშინაც, როცა კავშირი აღარ არსებობს.
  • გზა ჯერ GET /v1/models-ით შეამოწმეთ. მას გასაღები არ სჭირდება და მოკლე JSON სიას აბრუნებს.

კავშირის პრობლემები

სიმპტომი მიზეზი და გამოსწორება
კავშირი 127.0.0.1:9050-თან ან 127.0.0.1:4444-თან უარყოფილია თქვენს მანქანაზე Tor კლიენტი ან I2P როუტერი არ მუშაობს, ან სხვა პორტზე უსმენს. Tor Browser თავის SOCKS პროქსის 9150 პორტზე გთავაზობთ.
Could not resolve host .onion სახელისთვის კლიენტმა სახელის გადაწყვეტა თავად სცადა. გამოიყენეთ --socks5-hostname cURL-ში და socks5h:// პროქსის URL-ში, რომ სახელი Tor კლიენტმა გადაწყვიტოს.
I2P პროქსი საკუთარი შეცდომის გვერდით პასუხობს როუტერმა მისამართი ჯერ ვერ იპოვა. როუტერს გაშვების შემდეგ რამდენიმე წუთი სჭირდება. სცადეთ ხელახლა.
401 Missing authentication-ით მოთხოვნა გასაღების გარეშე მოვიდა. გაგზავნეთ იგივე სათაური, რაც ღია ვებში.

ყველა სხვა შეცდომა იგივეა, რაც ღია ვებში. შეცდომების დამუშავება

თქვენი გასაღები JavaScript-ის გარეშე

Shannon-ს ასევე აქვს ვებსაიტი JavaScript-ის გარეშე, რომელიც ღია ვებში, onion სერვისად და eepsite-ად ხელმისაწვდომია. მისი /keys გვერდი თქვენს API გასაღებს აჩვენებს და მის შეცვლის საშუალებას გაძლევთ, ასე რომ გასაღები Tor-ის ან I2P-ის დატოვების გარეშე შეგიძლიათ მიიღოთ. encrypted.shannon-ai.com/keys

ამ ვებსაიტის მისამართები სამივე ქსელში აქ არის ჩამოთვლილი: დაშიფრული წვდომა