yym68686 commited on
Commit
3e3ea9a
·
1 Parent(s): 52bcfe4

Fix Claude response reception logic

Browse files
Files changed (4) hide show
  1. .gitignore +2 -1
  2. main.py +3 -1
  3. response.py +8 -4
  4. test/launch_with_clear.py +8 -0
.gitignore CHANGED
@@ -1,4 +1,5 @@
1
  api.json
2
  api.yaml
3
  .env
4
- __pycache__
 
 
1
  api.json
2
  api.yaml
3
  .env
4
+ __pycache__
5
+ .vscode
main.py CHANGED
@@ -64,13 +64,15 @@ async def process_request(request: RequestModel, provider: Dict):
64
  print("provider: ", provider['provider'])
65
  url = provider['base_url']
66
  parsed_url = urlparse(url)
 
67
  engine = None
68
  if parsed_url.netloc == 'generativelanguage.googleapis.com':
69
  engine = "gemini"
70
- elif parsed_url.netloc == 'api.anthropic.com':
71
  engine = "claude"
72
  else:
73
  engine = "gpt"
 
74
 
75
  url, headers, payload = await get_payload(request, engine, provider)
76
 
 
64
  print("provider: ", provider['provider'])
65
  url = provider['base_url']
66
  parsed_url = urlparse(url)
67
+ # print(parsed_url)
68
  engine = None
69
  if parsed_url.netloc == 'generativelanguage.googleapis.com':
70
  engine = "gemini"
71
+ elif parsed_url.netloc == 'api.anthropic.com' or parsed_url.path.endswith("v1/message"):
72
  engine = "claude"
73
  else:
74
  engine = "gpt"
75
+ print(engine)
76
 
77
  url, headers, payload = await get_payload(request, engine, provider)
78
 
response.py CHANGED
@@ -83,12 +83,16 @@ async def fetch_claude_response_stream(client, url, headers, payload, model):
83
  try:
84
  timestamp = datetime.timestamp(datetime.now())
85
  async with client.stream('POST', url, headers=headers, json=payload) as response:
 
86
  async for chunk in response.aiter_bytes():
87
- chunk_line = chunk.decode('utf-8').split("\n")
88
- for chunk in chunk_line:
89
- if chunk.startswith("data:"):
90
- line = chunk[6:]
 
 
91
  print(line)
 
92
  resp: dict = json.loads(line)
93
  message = resp.get("message")
94
  if message:
 
83
  try:
84
  timestamp = datetime.timestamp(datetime.now())
85
  async with client.stream('POST', url, headers=headers, json=payload) as response:
86
+ buffer = ""
87
  async for chunk in response.aiter_bytes():
88
+ buffer += chunk.decode('utf-8')
89
+ while "\n" in buffer:
90
+ line, buffer = buffer.split("\n", 1)
91
+ print(line)
92
+
93
+ if line.startswith("data:"):
94
  print(line)
95
+ line = line[6:]
96
  resp: dict = json.loads(line)
97
  message = resp.get("message")
98
  if message:
test/launch_with_clear.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import subprocess
3
+
4
+ # 清理终端
5
+ subprocess.call('clear' if os.name == 'posix' else 'cls', shell=True)
6
+
7
+ # 运行主程序
8
+ os.system(os.environ['PYTHONPATH'] + ' main.py')