Skip to content

Instantly share code, notes, and snippets.

@lazydao
Created April 28, 2025 08:18
Show Gist options
  • Save lazydao/21fdb2635654bedfdf94422f4c7d70bb to your computer and use it in GitHub Desktop.
Save lazydao/21fdb2635654bedfdf94422f4c7d70bb to your computer and use it in GitHub Desktop.
SnipDo插件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import clr
clr.AddReference('System')
clr.AddReference('System.Web.Extensions')
from System import Uri
from System.Net import HttpWebRequest
from System.Text import Encoding
from System.IO import StreamReader
from System.Web.Script.Serialization import JavaScriptSerializer
import sys
DEFAULT_MAGNIFIER_PROMPT = u"""
[任务]
请用通俗、条理清晰的中文解释 <CONTENT>,帮助普通人快速理解其要义。
要求
1. 如有必要,可插入代码示例或示意图。
2. 仅输出解释内容,不附加任何说明、标签或格式指令。
3. 使用 markdown 格式。
<CONTENT>
%s
<CONTENT>
""" % PLAIN_TEXT
DEFAULT_DICTIONARY_PROMPT = u"""
[任务]
翻译 <CONTENT>:
- 若为中文则译为 English
- 否则译为中文
要求
1. 保留原有段落、列表等排版,可轻微调整以便阅读。
2. 全大写词保持不变;URL、邮箱、数字原样保留。
3. 仅输出译文,不附带任何说明、标签或元数据。
4. 使用 markdown 格式。
<CONTENT>
%s
<CONTENT>
""" % PLAIN_TEXT
def call_with_dotnet(api_key, api_base, model, prompt):
url = Uri(api_base.rstrip('/') + "/chat/completions")
req = HttpWebRequest.Create(url)
req.Method = "POST"
req.ContentType = "application/json"
req.Headers["Authorization"] = "Bearer " + api_key
payload = {
"model": model,
"messages": [{"role": "user", "content": prompt}],
}
serializer = JavaScriptSerializer()
data = serializer.Serialize(payload)
bytes = Encoding.UTF8.GetBytes(data)
req.ContentLength = bytes.Length
reqStream = req.GetRequestStream()
reqStream.Write(bytes, 0, bytes.Length)
reqStream.Close()
try:
resp = req.GetResponse()
stream = resp.GetResponseStream()
reader = StreamReader(stream, Encoding.UTF8)
resp_data = reader.ReadToEnd()
reader.Close()
stream.Close()
resp.Close()
except Exception as e:
print(u"请求失败:%s" % e, file=sys.stderr)
sys.exit(1)
resp_json = serializer.DeserializeObject(resp_data)
return resp_json["choices"][0]["message"]["content"]
def main():
api_key = "sk-sz***"
api_base = "https://api.siliconflow.cn/v1"
model = "deepseek-ai/DeepSeek-V3"
try:
output = call_with_dotnet(api_key, api_base, model, DEFAULT_MAGNIFIER_PROMPT)
except Exception as e:
print(u"请求失败:%s" % e, file=sys.stderr)
sys.exit(1)
print(output)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment