# -*- coding: utf-8 -*-
"""第 8 章配套代码：用 OpenAI 兼容接口调用通义千问（含知识库问答示例）。
使用方法：
1. 在阿里云百炼控制台获取 API Key；
2. 设置环境变量 DASHSCOPE_API_KEY；
3. 运行：python ch08_agent_demo.py
"""

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),   # 阿里云百炼控制台获取
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)


def chat(question: str, system: str = None) -> str:
    messages = []
    if system:
        messages.append({"role": "system", "content": system})
    messages.append({"role": "user", "content": question})
    resp = client.chat.completions.create(
        model="qwen-plus",
        messages=messages,
    )
    return resp.choices[0].message.content


if __name__ == "__main__":
    # 示例 1：基础问答
    print(chat("请用一句话解释什么是 RAG（检索增强生成）。"))

    # 示例 2：知识库助手角色（模拟）
    system_prompt = (
        "你是一名企业知识库问答助手，回答须基于给定资料，"
        "不得编造；资料中没有的内容，请明确说明'未找到相关依据'。"
    )
    print(chat("设备期间核查周期一般多长？", system_prompt))
