找回密码
 立即注册
首页 业界区 安全 python调用大模型api来进行对话

python调用大模型api来进行对话

艾晓梅 3 天前
一、Openai的接口调用
pip包下载
  1. pip install openai
复制代码
  
配置sk,url
  1. OPENAI_API_KEY = sk-xxxxx
  2. OPENAI_BASE_URL = https://api.openai.com/v1
复制代码
  
  
接口调用
  1. import os
  2. from flask import Flask, jsonify
  3. from openai import OpenAI
  4. config = configparser.ConfigParser()
  5. config.read("config.cfg", encoding="utf-8")
  6. OPENAI_API_KEY = config.get("default", "OPENAI_API_KEY", fallback=None)
  7. OPENAI_BASE_URL = config.get("default", "OPENAI_BASE_URL", fallback=None)
  8. @app.route("/gpt_test")
  9. def gpt_test():
  10.     """
  11.     简单调用一次 GPT,返回一个固定问题的回答
  12.     """
  13.     if not OPENAI_API_KEY:
  14.         return jsonify({"error": "OPENAI_API_KEY 未配置"}), 500
  15.     try:
  16.         # 这里用的是 chat.completions.create 风格
  17.         resp = client.chat.completions.create(
  18.             model="gpt-4.1-mini",  # 或者你有的任意模型,比如 gpt-4.1, gpt-4o 等
  19.             messages=[
  20.                 {"role": "system", "content": "你是一个简洁回答的助手。"},
  21.                 {"role": "user", "content": "简单用一句话介绍一下你自己。"},
  22.             ],
  23.         )
  24.         answer = resp.choices[0].message.content
  25.         return jsonify({"answer": answer})
  26.     except Exception as e:
  27.         print("GPT 调用异常:", repr(e))
  28.         return jsonify({"error": str(e)}), 500
复制代码
  
  
 二、阿里通义
安装官方sdk
  1. pip install dashscope
复制代码
  
使用dashscope.Generation.call基本可以复用
  1. ALIYUN_API_KEY = config.get("default", "ALIYUN_API_KEY", fallback=None)
  2.     @app.route("/llm_test/")
  3.     def llm_test():
  4.         """测试与大模型的对话功能"""
  5.         try:
  6.             messages = [
  7.                 {'role': 'system', 'content': 'You are a helpful assistant.'},
  8.                 {'role': 'user', 'content': '你是谁?'}
  9.             ]
  10.             answer = chat_with_model(messages)
  11.             return jsonify({"answer": answer})
  12.         except Exception as e:
  13.             print("LLM error:", repr(e))
  14.             return jsonify({"error": str(e)}), 500
复制代码
  
  
 这里有几类模型id都可以使用:

  • qwen3-max
  • qwen-plus
  • qwen-turbo
参考:阿里云百炼
如果需要使用到prompt,比如我们有路径app/prompt_store/底下的prompt文件:doc-llm-latest.md
首先按照字符串处理的思路,先读取出来:
  1. from pathlib import Path
  2. # run.py 所在目录
  3. BASE_DIR = Path(__file__).resolve().parent
  4. PROMPT_DIR = BASE_DIR / "app" / "prompt_store"
  5. PROMPT_LATEST_FILE = PROMPT_DIR / "doc-llm-latest.md"
  6. def load_latest_prompt() -> str | None:
  7.     """读取 doc-llm-latest.md 的内容"""
  8.     try:
  9.         with PROMPT_LATEST_FILE.open("r", encoding="utf-8") as f:
  10.             return f.read()
  11.     except FileNotFoundError:
  12.         print(f"[WARN] Prompt file not found: {PROMPT_LATEST_FILE}")
  13.         return None
  14.     except Exception as e:
  15.         print(f"[ERROR] Failed to read prompt: {e!r}")
  16.         return None
复制代码
 
然后message格式补充
  1. @app.route("/llm_with_prompt/")
  2. def llm_with_prompt():
  3.         """使用最新的Prompt与大模型对话"""
  4.         prompt = load_latest_prompt()
  5.         if not prompt:
  6.                 return jsonify({"error": "No prompt available"}), 500
  7.         try:
  8.                 messages = [
  9.                         {
  10.                                 'role': 'system',
  11.                                 'content': prompt
  12.                         },
  13.                         {
  14.                                 'role': 'user',
  15.                                 'content': "请用一两句话,概括一下这个文档测试规范的核心目标。"
  16.                         }
  17.                 ]
  18.                 answer = chat_with_model(messages)
  19.                 return jsonify({"answer": answer})
  20.        
  21.         except Exception as e:
  22.                 print("LLM with prompt error:", repr(e))
  23.                 return jsonify({"error": str(e)}), 500
复制代码
  
我们将llm对话能力函数封装起来,提供一个类或者函数来调用
  1. # 统一管理大模型调用,提供配置
  2. import configparser
  3. from pathlib import Path
  4. import dashscope
  5. BASE_DIR = Path(__file__).resolve().parent.parent
  6. CONFIG_FILE = BASE_DIR / "config.cfg"
  7. config = configparser.ConfigParser()
  8. config.read(CONFIG_FILE, encoding="utf-8")
  9. ALIYUN_API_KEY = config.get("default", "ALIYUN_API_KEY", fallback=None)
  10. ALIYUN_MODEL = config.get("default", "ALIYUN_MODEL")
  11. def init_llm():
  12.     """在Flask启动时调用一次,设置api_key"""
  13.     if not ALIYUN_API_KEY:
  14.         print("[WARN] No ALIYUN_API_KEY configured in config.cfg")
  15.     dashscope.api_key = ALIYUN_API_KEY
  16. def chat_with_model(messages: list[dict]) -> str:
  17.     """调用大模型进行对话
  18.     Args:
  19.         messages (list[dict]): 消息列表,格式参考OpenAI Chat API
  20.     Returns:
  21.         str: 模型回复内容
  22.     """
  23.     if not ALIYUN_API_KEY:
  24.         raise ValueError("No ALIYUN_API_KEY configured")
  25.     response = dashscope.Generation.call(
  26.         model=ALIYUN_MODEL,
  27.         messages=messages,
  28.     )
  29.     print(f"raw response: {response}")
  30.     answer = response["output"]["choices"][0]["message"]["content"]
  31.     return answer
复制代码
  
  
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册