-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.py
More file actions
82 lines (70 loc) · 2.84 KB
/
Copy pathexample.py
File metadata and controls
82 lines (70 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# -*- coding: utf-8 -*-
"""
Пример использования cline-api через официальный OpenAI SDK.
Запустите сначала сервер:
powershell -ExecutionPolicy Bypass -File start-api.ps1
Сервер OpenAI-совместим, поэтому достаточно указать base_url на
http://127.0.0.1:8080/v1. api_key можно любой (auth не включён по умолчанию).
"""
import os
from openai import OpenAI
BASE_URL = os.environ.get("CLINE_API_BASE", "http://127.0.0.1:8080/v1")
client = OpenAI(
base_url=BASE_URL,
api_key=os.environ.get("CLINE_API_AUTH_TOKEN", "local-dummy"),
)
MODEL = os.environ.get("CLINE_MODEL", "cline-free/glm-5.2")
def main():
# 1) Простой чат
print("=== простой чат ===")
r = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "Назови столицу Франции одним словом."}],
)
print(r.choices[0].message.content)
print()
# 2) Чат с файлом (содержимое передаём инлайном через extra_body,
# т.к. `files` — это Cline-расширение эндпоинта)
print("=== чат с файлом ===")
file_text = open(__file__, encoding="utf-8").read()
r = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "user",
"content": "Что делает этот прикреплённый Python-файл? Ответь одним предложением.",
}
],
extra_body={"files": [{"name": "example.py", "content": file_text[:2000]}]},
)
print(r.choices[0].message.content)
print()
# 3) Файл по пути на диске сервера (без выгрузки содержимого)
print("=== файл по пути ===")
r = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "user",
"content": "Сколько примерно строк в server.mjs? Ответь одним числом.",
}
],
extra_body={"file_paths": [os.path.join(os.path.dirname(__file__), "server.mjs")]},
)
print(r.choices[0].message.content)
print()
# 4) Стриминг (SSE)
print("=== стриминг ===")
stream = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "Напиши ровно одно короткое предложение про сам себя."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
print()
print("=== done ===")
if __name__ == "__main__":
main()