mirror of
https://github.com/b3nguang/Ollama-Scan.git
synced 2025-06-21 18:30:19 +00:00
think 标签处理
This commit is contained in:
parent
97f9cf3b13
commit
bb6347d56b
25
main.py
25
main.py
@ -11,10 +11,13 @@ from typing import List
|
|||||||
from ollama import Client
|
from ollama import Client
|
||||||
from prompt_toolkit import PromptSession
|
from prompt_toolkit import PromptSession
|
||||||
from prompt_toolkit.completion import WordCompleter
|
from prompt_toolkit.completion import WordCompleter
|
||||||
|
import re
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
from rich.panel import Panel
|
from rich.panel import Panel
|
||||||
from rich.progress import Progress, SpinnerColumn, TextColumn
|
from rich.progress import Progress, SpinnerColumn, TextColumn
|
||||||
from rich.table import Table
|
from rich.table import Table
|
||||||
|
from rich.markdown import Markdown
|
||||||
|
from rich.style import Style
|
||||||
|
|
||||||
|
|
||||||
class OllamaShell:
|
class OllamaShell:
|
||||||
@ -278,7 +281,27 @@ class OllamaShell:
|
|||||||
for chunk in stream:
|
for chunk in stream:
|
||||||
content = chunk["message"]["content"]
|
content = chunk["message"]["content"]
|
||||||
response += content
|
response += content
|
||||||
self.console.print(content, end="", highlight=False)
|
|
||||||
|
# 处理思考标签
|
||||||
|
think_pattern = r'<think>(.*?)</think>'
|
||||||
|
parts = re.split(think_pattern, response, flags=re.DOTALL)
|
||||||
|
|
||||||
|
for i, part in enumerate(parts):
|
||||||
|
if i % 2 == 1: # 思考内容
|
||||||
|
# 显示思考过程
|
||||||
|
think_panel = Panel(
|
||||||
|
Markdown(part.strip()),
|
||||||
|
title="思考过程",
|
||||||
|
style=Style(color="grey70", italic=True),
|
||||||
|
border_style="grey50"
|
||||||
|
)
|
||||||
|
self.console.print(think_panel)
|
||||||
|
self.console.print() # 添加空行
|
||||||
|
else: # 普通内容
|
||||||
|
if part.strip():
|
||||||
|
# 使用 Markdown 渲染普通内容
|
||||||
|
md = Markdown(part.strip())
|
||||||
|
self.console.print(md)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
self.console.print("\n[yellow]⛔️ 对话已取消[/yellow]")
|
self.console.print("\n[yellow]⛔️ 对话已取消[/yellow]")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user