add gitea workflow
This commit is contained in:
155
deepseek.py
Normal file
155
deepseek.py
Normal file
@ -0,0 +1,155 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from DrissionPage import Chromium, ChromiumOptions
|
||||
from DrissionPage.common import Keys
|
||||
from log.log_manager import log
|
||||
import time
|
||||
|
||||
|
||||
class ChatBot(ABC):
|
||||
def __init__(self, url):
|
||||
self.prompt = None
|
||||
co = ChromiumOptions().set_local_port(9222)
|
||||
self.browser = Chromium(co)
|
||||
self.tab = self.browser.new_tab()
|
||||
self.tab.get(url)
|
||||
|
||||
@abstractmethod
|
||||
def do_chat(self):
|
||||
"""抽象方法,由子类实现"""
|
||||
pass
|
||||
|
||||
def chat(self, prompt):
|
||||
self.prompt = prompt
|
||||
response = self.do_chat()
|
||||
self.close_tab()
|
||||
return response
|
||||
|
||||
def close_tab(self):
|
||||
"""关闭当前标签页"""
|
||||
if self.tab:
|
||||
self.tab.close()
|
||||
|
||||
def finish(self):
|
||||
"""关闭浏览器"""
|
||||
self.close_tab()
|
||||
if self.browser:
|
||||
self.browser.quit()
|
||||
|
||||
|
||||
# ====== 一个可运行的具体子类示例 ======
|
||||
class QwenChatBot(ChatBot):
|
||||
def do_chat(self):
|
||||
"""在 https://chat.qwen.ai/ 页面输入 prompt,按回车,等待结果"""
|
||||
# 1. 定位输入框(示例:textarea 或 input)
|
||||
log('正在浏览器打开新tab...')
|
||||
time.sleep(2)
|
||||
input_box = self.tab.ele('tag:textarea') or self.tab.ele('tag:input')
|
||||
if not input_box:
|
||||
log('未找到输入框')
|
||||
return []
|
||||
|
||||
# 2. 输入 prompt 并发送回车键
|
||||
input_box.input(self.prompt)
|
||||
log(f'prompt: {self.prompt}')
|
||||
input_box.input(Keys.ENTER)
|
||||
log('正在等待结果...')
|
||||
|
||||
|
||||
# 3. 等待响应加载
|
||||
sleep_time = 100
|
||||
while sleep_time > 0:
|
||||
log(f'等待结果加载中... 剩余时间:{sleep_time}s')
|
||||
if self.tab.ele('#send-message-button'):
|
||||
break
|
||||
time.sleep(1)
|
||||
sleep_time -= 1
|
||||
|
||||
# 4. 获取聊天内容
|
||||
response_content = self.tab.ele('#response-content-container').ele('tag:div').text
|
||||
log(f'获取结果成功:{response_content}')
|
||||
return response_content
|
||||
|
||||
|
||||
class DeepSeekChatBot(ChatBot):
|
||||
def do_chat(self):
|
||||
"""在 https://chat.deepseek.com/ 页面输入 prompt,按回车,等待结果"""
|
||||
# 1. 定位输入框(示例:textarea 或 input)
|
||||
log('正在浏览器打开新tab...')
|
||||
time.sleep(2)
|
||||
input_box = self.tab.ele('tag:textarea') or self.tab.ele('tag:input')
|
||||
if not input_box:
|
||||
log('未找到输入框')
|
||||
return []
|
||||
|
||||
# 2. 输入 prompt 并发送回车键
|
||||
input_box.input(self.prompt)
|
||||
log(f'prompt: {self.prompt}')
|
||||
input_box.input(Keys.ENTER)
|
||||
log('正在等待结果...')
|
||||
|
||||
|
||||
# 3. 等待响应加载
|
||||
sleep_time = 100
|
||||
while sleep_time > 0:
|
||||
log(f'等待结果加载中... 剩余时间:{sleep_time}s')
|
||||
# if self.tab.ele('tag:path@d^="M8.3125"'):
|
||||
if self.tab.html.__contains__('M8.3125'):
|
||||
break
|
||||
time.sleep(1)
|
||||
sleep_time -= 1
|
||||
|
||||
# 4. 获取聊天内容
|
||||
response_content = self.tab.ele('tag:div@class=ds-markdown').text
|
||||
log(f'获取结果成功:{response_content}')
|
||||
return response_content
|
||||
|
||||
if __name__ == '__main__':
|
||||
prompt = '''
|
||||
# 心理学每日一课
|
||||
|
||||
## 系统指令
|
||||
你是一位资深心理学教授,专精于将复杂的心理学概念转化为通俗易懂、生动实用的知识。你的任务是按照**严格的JSON格式**输出每日心理学知识点。
|
||||
|
||||
## 核心要求
|
||||
1. 输出必须是**纯净的JSON对象**,不包含任何额外的解释、问候或Markdown标记
|
||||
2. 严格遵循指定的JSON结构,键名和层级必须完全一致
|
||||
3. 内容应当:权威准确、贴近生活、启发思考、实用性强
|
||||
|
||||
## 内容规范
|
||||
- **知识点选择**:优先选择有实证基础、生活关联度高的核心概念
|
||||
- **难度级别**:保持在大众可理解范围内,避免过度专业术语
|
||||
- **案例真实性**:案例应基于真实心理现象,具有典型性和教育意义
|
||||
- **建议可行性**:行动建议应当具体、可操作、有针对性
|
||||
|
||||
## 输出格式
|
||||
```json
|
||||
{
|
||||
"metadata": {
|
||||
"topic_area": "知识点所属领域",
|
||||
"difficulty": "入门|中等|进阶",
|
||||
"date_context": "适用场景或时期"
|
||||
},
|
||||
"content": {
|
||||
"concept_name": "标准化的心理学概念名称",
|
||||
"core_explanation": {
|
||||
"definition": "清晰准确的定义描述",
|
||||
"mechanism": "心理机制或原理说明",
|
||||
"significance": "理论价值和现实意义"
|
||||
},
|
||||
"practical_application": {
|
||||
"case_study": "具体的生活情境案例",
|
||||
"psychological_analysis": "基于理论的案例分析",
|
||||
"warning_signs": "相关的警示信号或表现",
|
||||
"coping_strategies": "具体的应对或应用方法"
|
||||
},
|
||||
"learning_extensions": {
|
||||
"reflection_question": "促进行我觉察的反思问题",
|
||||
"action_step": "今日可执行的小行动",
|
||||
"related_concepts": ["相关概念1", "相关概念2"]
|
||||
}
|
||||
}
|
||||
}
|
||||
'''
|
||||
deepseek = DeepSeekChatBot('https://chat.deepseek.com/')
|
||||
content = deepseek.chat(prompt)
|
||||
log(content)
|
||||
Reference in New Issue
Block a user