Repository navigation
Replies: 2 comments
|
不管怎样修改使用提示词,ChatGLM都无法按照既定格式进行输出,即便告诉它要怎么修改输出内容,可下一次还是原样输出,任何错误输出都尝试遍了,就是不会正确输出,这简直就是人工智障,不是人工智能。 |
0 replies
|
是的,可以通过以下几种方式让 ChatGLM 返回固定格式: 方法 1:在 prompt 中明确要求 prompt = """请用以下格式回答问题,只返回 JSON,不要其他内容:
{"answer": "yes" 或 "no", "reason": "简短解释"}
问题:今天天气好吗?"""
response = model.chat(tokenizer, prompt)方法 2:引导式生成(Guided Decoding) 使用 import outlines
from outlines.models import transformers
model = transformers("THUDM/chatglm2-6b", device="cuda")
generator = outlines.generate.choice(model, ["是", "否"])
result = generator("今天天气好吗?")
# result 只可能是 "是" 或 "否"方法 3:Few-shot 示例 prompt = """请只回答"是"或"否"。
问题:1+1=2吗?
回答:是
问题:地球是平的吗?
回答:否
问题:{user_question}
回答:"""方法 4:后处理 + 重试 def ask_yesno(question: str, max_retries: int = 3) -> bool:
for _ in range(max_retries):
response = model.chat(tokenizer, f"请只回答是或否:{question}")
if "是" in response:
return True
if "否" in response:
return False
raise ValueError("无法获取是/否回答")对于生产环境,方法 2(引导式生成)最可靠,但需要额外依赖。方法 3(few-shot)在大多数情况下够用,实现最简单。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
可以让chatglm用固定的方式或者二选一的方式,回答问题吗?比如返回的结果的是或者否。
All reactions