Ollama 接口中设置系统提示词(system_prompt)

这两种方法都可以在 Ollama 接口中设置系统提示词(system_prompt),但它们在实现方式和适用场景上有一些不同。以下是它们的详细对比:

1. 使用 system 参数

代码示例

Python

复制

import httpx

async def chat_with_ollama():
    system_prompt = "你是一个专业的程序员,擅长使用代码解决用户的问题。"
    messages = [{"role": "user", "content": "请帮我写一个计算两个数之和的Python函数"}]
    async with httpx.AsyncClient() as client:
        response = await client.post(
            "http://localhost:11434/api/chat",
            json={
                "model": "deepseek-chat",
                "system": system_prompt,
                "messages": messages
            }
        )
    return response.json()
特点
  • 直接在请求中设置:通过 system 参数直接传递系统提示词。

  • 简洁明了:代码结构简单,易于理解和维护。

  • 适用场景:适用于单轮对话或简单的多轮对话,尤其是当系统提示词不需要频繁变化时。

2. 在 messages 参数中设置

代码示例

Python

复制

import httpx

async def multi_turn_chat():
    system_prompt = "你是一个专业的程序员,擅长使用代码解决用户的问题。"
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": "请帮我写一个计算两个数之和的Python函数"}
    ]
    async with httpx.AsyncClient() as client:
        response = await client.post(
            "http://localhost:11434/api/chat",
            json={
                "model": "deepseek-chat",
                "messages": messages
            }
        )
    return response.json()
特点
  • 通过 messages 参数传递:将系统提示词作为一条消息(role: system)包含在 messages 列表中。

  • 灵活性更高:可以将系统提示词与其他消息(如用户消息、AI 助手消息)一起传递,适合复杂的多轮对话场景。

  • 适用场景:适用于需要动态调整系统提示词或在多轮对话中逐步构建上下文的场景。

两种方法的主要区别

表格

复制

特点使用 system 参数在 messages 参数中设置
代码结构简洁,直接在请求体中设置 system 参数稍复杂,需要在 messages 中添加系统消息
适用场景单轮对话或简单的多轮对话复杂的多轮对话,动态调整系统提示词
灵活性较低,系统提示词固定较高,可以动态调整系统提示词
是否需要额外消息结构不需要,直接传递字符串需要,系统提示词作为一条消息传递

总结

  • 使用 system 参数

    • 适用于简单的对话场景,系统提示词不需要频繁变化。

    • 代码结构简单,易于理解和维护。

  • messages 参数中设置

    • 适用于复杂的多轮对话场景,需要动态调整系统提示词。

    • 提供更高的灵活性,可以与其他消息一起传递。

选择建议

  • 如果你的对话场景相对简单,系统提示词固定,推荐使用 system 参数。

  • 如果你需要处理复杂的多轮对话,或者需要动态调整系统提示词,推荐在 messages 参数中设置。

希望这些解释对你理解这两种方法的区别有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值