返回模型
说明文档
language:
- en base_model:
- meta-llama/Llama-3.2-1B-Instruct pipeline_tag: text-generation
This is a translation task with content provided directly - no codebase search needed. Translating now:
import onnxruntime_genai as og
model = og.Model('soap5_onnx')
tokenizer = og.Tokenizer(model)
tokenizer_stream = tokenizer.create_stream()
# 搜索选项 - 与原始版本完全匹配
search_options = {
'max_length': 4096,
'temperature': 0.1,
'top_p': 0.9,
'do_sample': True,
'batch_size': 1
}
soap_note_prompt = \"\"\"你是一位医学教授专家,协助创建医学准确的SOAP摘要。
请确保回复遵循结构化格式:S:、O:、A:、P:,不使用markdown或特殊格式。
根据对话创建医学SOAP笔记摘要,遵循以下指南:\n
S(主观):总结患者报告的症状,包括主诉和相关病史。
以患者的陈述为主要来源,确保使用标准化术语。\n
O(客观):突出关键发现,如生命体征、实验室结果和影像学检查,强调重要细节如受影响的身体侧别和具体剂量。
在相关处包含正常范围。\n
A(评估):提供结合主观和客观数据的简明评估。陈述主要诊断和任何鉴别诊断,注明潜在并发症和预后前景。\n
P(计划):概述管理计划,包括药物、饮食、会诊和教育。确保提及必要的其他专科转诊,并解决依从性挑战。\n
注意事项:仅根据提供的文字记录编制报告。使用简洁的医学术语和缩写,以便医生有效沟通。\n
请以清晰、简单的列表格式总结,不使用markdown或项目符号。直接在文本后使用'S:'、'O:'、'A:'、'P:'。避免任何样式或特殊字符。
文字记录:\n\"\"\"
text = input("输入:")
if not text:
print("错误,输入不能为空")
exit()
# 方法1:通过在提示后添加SOAP开头来强制生成
full_prompt = soap_note_prompt + text
# 使用最完整的Llama格式
chat_template = "<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n{prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\nS: "
prompt = chat_template.format(prompt=full_prompt)
input_tokens = tokenizer.encode(prompt)
print(f"提示词中的token数:{len(input_tokens)}")
params = og.GeneratorParams(model)
params.set_search_options(**search_options)
generator = og.Generator(model, params)
generator.append_tokens(input_tokens)
print("\n正在生成SOAP笔记...")
print("S: ", end='', flush=True) # 提示词中已包含"S: "
# 生成SOAP笔记的其余部分
generated_text = ""
token_count = 0
try:
while not generator.is_done() and token_count < 2000: # 限制为2000个token以确保安全
generator.generate_next_token()
new_token = generator.get_next_tokens()[0]
decoded = tokenizer_stream.decode(new_token)
# 如果仍在输入回显阶段则跳过
if token_count < 50 and (text[:20] in generated_text + decoded):
token_count += 1
continue
print(decoded, end='', flush=True)
generated_text += decoded
token_count += 1
# 如果看到结束标记则停止
if any(marker in decoded for marker in ["<|eot_id|>", "<|end_of_text|>", "</s>"]):
break
except KeyboardInterrupt:
print("\n已中断")
print()
# 如果效果不佳,尝试方法2:不同的提示结构
if len(generated_text.strip()) < 50 or text[:50] in generated_text:
print("\n\n方法1效果不佳。正在尝试替代方法...")
del generator # 清理
# 尝试更简单的方法 - 可能模型期望不同的格式
simple_prompt = f"{soap_note_prompt}{text}\n\nSOAP笔记:\nS: "
input_tokens = tokenizer.encode(simple_prompt)
params = og.GeneratorParams(model)
params.set_search_options(**search_options)
generator = og.Generator(model, params)
generator.append_tokens(input_tokens)
print("\n正在使用简化格式生成...")
print("S: ", end='', flush=True)
generated_text = ""
token_count = 0
try:
while not generator.is_done() and token_count < 2000:
generator.generate_next_token()
new_token = generator.get_next_tokens()[0]
decoded = tokenizer_stream.decode(new_token)
print(decoded, end='', flush=True)
generated_text += decoded
token_count += 1
if any(marker in decoded for marker in ["<|eot_id|>", "<|end_of_text|>", "</s>"]):
break
except KeyboardInterrupt:
print("\n已中断")
print()
del generator
print("\n--- 生成完成 ---")
Translation complete. All code blocks, string values that need to remain in English (like model tokens, format markers), and markdown formatting preserved. Comments, prompts, and user-facing strings translated to Simplified Chinese.
Johnyquest7/Genai_onnx
作者 Johnyquest7
text-generation
↓ 0
♥ 0
创建时间: 2025-06-16 02:35:15+00:00
更新时间: 2025-06-16 02:39:55+00:00
在 Hugging Face 上查看文件 (8)
.gitattributes
README.md
genai_config.json
model.onnx
ONNX
model.onnx.data
special_tokens_map.json
tokenizer.json
tokenizer_config.json