首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >构建AI智能体:初识腾讯混元AI大模型与API调用

构建AI智能体:初识腾讯混元AI大模型与API调用

原创
作者头像
未闻花名
修改2025-12-10 11:52:51
修改2025-12-10 11:52:51
2950
举报

​ 欢迎大家交流大模型的开发的使用,以下为个人见解,不对之处欢迎指正

一、了解大模型

在人工智能领域,相比早期的NLP,近期大模型如雨后春笋般不断涌现,体现了时代的发展和科技的进步,以及众多获益者的深度追求,使得大模型展现出了卓越的性能和广泛的应用前景。

闲话少叙,本集合文章是作者对大模型一路的笔记和从业后的回顾,希望能和大家一起成长交流,将从初学大模型基础到AI智能体的搭建一步步开启AI大模型时代的开端。

二、混元云大模型

腾讯混元大模型是腾讯自主研发的企业级大语言模型,基于 Transformer 架构,拥有千亿级参数规模。该模型在中文理解和生成任务上表现优异,具备强大的逻辑推理、多轮对话和代码生成能力。混元支持文本生成、内容理解、逻辑推理等多种场景,并提供 Lite、Standard、Pro 三个版本以满足不同需求。

腾讯混云通过腾讯云平台提供服务,提供完善的 API 接口和 SDK 支持,方便开发者快速集成。模型支持联网搜索增强(需配置),能够获取实时信息。在安全方面,混元内置了严格的内容过滤机制,确保生成内容符合安全规范。

该模型已广泛应用于智能客服、内容创作、编程辅助、数据分析等场景,成为企业数字化转型的重要 AI 基础设施。随着持续迭代,混元在推理能力和多模态支持方面也在不断进化。

三、API调用与示例

1. API-KEY申请

API 密钥是用户访问腾讯云 API 进行身份验证时需要用到的安全凭证,由 SecretId 和 SecretKey 一起组成。

1.首先登录腾讯云大模型API的管理后台,申请API-key;

2. 如果选择【使用腾讯云SDK方式接入】,则点击【创建密钥】进入控制台通过【API密钥管理】来生成API/SDK调用所需的签名APPID、SecretId与SecretKey信息

3. 如果选择【使用OpenAI SDK方式接入】,则点击【创建API KEY】进入兼容OpenAI API KEY的创建页面,点击新建即可生成API KEY,编辑apikey名称,确定即可。

申请成功后下方列表会多出来一条apikey信息:

3.获取到key后就可以在模型广场,查看、挑选我们需要的模型,进行体验或选择使用了。

4. 腾讯混元大模型API接口调用详细说明:

5. 混元 OpenAI 兼容接口相关调用示例:

  • 调用说明
  1. 大模型的调用通常采用Python,需对Python语言有基础的掌握,Python技术生态丰富,拥有完善的深度学习框架和数据处理工具,能覆盖从训练到微调的整个流程,降低了入门门槛;同时语法简洁,开发效率高,跨平台兼容性强。
  2. 主要通过腾讯的腾讯云大模型API提供的混元大模型API和SDK来实现大模型的应用,混元大模型支持文本模型和生图模型,通过API的方式方便开发者调用,可通过腾讯云SDK方式接入或使用OpenAI SDK方式接入,按需要的方式申请密钥即可。
  3. 腾讯混元API使用方法:
  • 导入模块:
代码语言:python
复制
import json
import os
from openai import OpenAI
# 配置腾讯混元API
client = OpenAI(
    api_key = os.environ.get('TENCENT_API_KEY'),  # 腾讯云API密钥
    base_url="https://api.hunyuan.cloud.tencent.com/v1",  # 腾讯混元API地址
)
  • 模型调用:
代码语言:python
复制
response = client.chat.completions.create(
            model="hunyuan-lite",  # 模型选择
            messages=messages,
            temperature=0.7,
            stream=False
        )
  • message配置:
代码语言:python
复制
review = '特别喜欢这款产品,使用起来很方便。'
messages=[
    {"role": "system", "content": "帮我判断产品表达的意思是正向还是负向,回复请用一个词语:正向 或者 负向"},
    {"role": "user", "content": review}
]
  • 输出结果:
代码语言:python
复制
# 获取生成的内容
result = response.output.choices[0].message.content
print(result)

2. 调用示例

1. 通过调用腾讯混元的hunyuan-lite模型识别一段文字表达的意思是正向还是负向

代码语言:python
复制
import json
import os
from openai import OpenAI

# 配置腾讯混元API
client = OpenAI(
    api_key = os.environ.get('TENCENT_API_KEY'),  # 腾讯云API密钥
    base_url="https://api.hunyuan.cloud.tencent.com/v1",  # 腾讯混元API地址
)

# 封装模型响应函数
def get_response(messages):
    try:
        response = client.chat.completions.create(
            model="hunyuan-lite",  # 模型选择
            messages=messages,
            temperature=0.7,
            stream=False
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"Error: {str(e)}"

# 测试
review = '特别喜欢这款产品,使用起来很方便。'
messages=[
    {"role": "system", "content": "帮我判断产品表达的意思是正向还是负向,回复请用一个词语:正向 或者 负向"},
    {"role": "user", "content": review}
]

response = get_response(messages)
print(f"模型回复: {response}")
  • 输出结果:
代码语言:txt
复制
模型回复: 正向

2.处理图像中的表格,可以使用腾讯云OCR服务先提取文字,再用混元大模型处理

我们将使用两个腾讯云SDK:一个用于OCR,一个用于混元大模型。由于腾讯云的OCR服务返回的结果是文本,我们需要将其组织成合适的提示词输入给混元大模型。

代码结构:

  • 定义OCR函数,提取图片中的文字。
  • 定义调用混元大模型的函数。
  • 主流程:先OCR,再将OCR结果作为用户输入,请求混元大模型输出JSON。
代码语言:python
复制
import json
import os
import base64
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.ocr.v20181119 import ocr_client, models as ocr_models
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models as llm_models

# 腾讯云API密钥
SECRET_ID = os.environ.get("TENCENTCLOUD_SECRET_ID", "sc-*******")
SECRET_KEY = os.environ.get("TENCENTCLOUD_SECRET_KEY", "sc-********")

# 1. 使用腾讯云OCR提取图片文字
def extract_text_from_image(image_path):
    try:
        # 读取图片并base64编码
        with open(image_path, 'rb') as f:
            image_data = base64.b64encode(f.read()).decode('utf-8')
        
        # 实例化认证对象
        cred = credential.Credential(SECRET_ID, SECRET_KEY)
        
        # 实例化客户端
        http_profile = HttpProfile(endpoint="ocr.tencentcloudapi.com")
        client_profile = ClientProfile(httpProfile=http_profile)
        client = ocr_client.OcrClient(cred, "ap-guangzhou", client_profile)
        
        # 构建OCR请求
        req = ocr_models.GeneralBasicOCRRequest()
        req.ImageBase64 = image_data
        
        # 发送请求
        resp = client.GeneralBasicOCR(req)
        
        # 提取所有识别到的文字
        extracted_text = ""
        if hasattr(resp, 'TextDetections'):
            for detection in resp.TextDetections:
                extracted_text += detection.DetectedText + " "
        
        return extracted_text.strip()
        
    except Exception as e:
        return f"OCR Error: {str(e)}"

# 2. 使用腾讯混元处理提取的文字
def process_with_hunyuan(extracted_text):
    try:
        # 实例化认证对象
        cred = credential.Credential(SECRET_ID, SECRET_KEY)
        
        # 实例化HTTP选项
        http_profile = HttpProfile()
        http_profile.endpoint = "hunyuan.tencentcloudapi.com"
        
        # 实例化客户端配置
        client_profile = ClientProfile()
        client_profile.httpProfile = http_profile
        
        # 实例化客户端
        client = hunyuan_client.HunyuanClient(cred, "ap-guangzhou", client_profile)
        
        # 构建请求
        req = llm_models.ChatCompletionsRequest()
        
        # 构建消息
        messages = [
            {"role": "system", "content": "你是一个表格解析专家。请将下面的文本内容整理成结构化的JSON格式,提取出表格中的关键信息。"},
            {"role": "user", "content": f"这是从表格图片中提取的文字:\n{extracted_text}\n\n请提取里面的内容,输出JSON格式。"}
        ]
        
        # 转换为腾讯云要求的格式
        formatted_messages = []
        for msg in messages:
            formatted_messages.append(llm_models.Message(
                Role=msg["role"],
                Content=msg["content"]
            ))
        
        # 设置模型参数
        req.FromJsonString(json.dumps({
            "Model": "hunyuan-lite",
            "Messages": [{"Role": msg.Role, "Content": msg.Content} for msg in formatted_messages],
            "Stream": False,
            "Temperature": 0.1  # 低温度确保输出稳定
        }))
        
        # 发送请求
        resp = client.ChatCompletions(req)
        
        # 提取回复内容
        if hasattr(resp, 'Choices') and len(resp.Choices) > 0:
            return resp.Choices[0].Message.Content
        else:
            return "Error: No response generated"
            
    except Exception as e:
        return f"LLM Error: {str(e)}"

# 主流程
def extract_table_from_image(image_path):
    print(f"正在处理图片: {image_path}")
    
    # 步骤1: 使用OCR提取文字
    print("正在使用OCR提取图片文字...")
    extracted_text = extract_text_from_image(image_path)
    
    if extracted_text.startswith("OCR Error"):
        print(f"OCR提取失败: {extracted_text}")
        return None
    
    print(f"OCR提取结果: {extracted_text[:100]}...")
    
    # 步骤2: 使用混元大模型处理文字
    print("正在使用混元大模型解析表格内容...")
    processed_result = process_with_hunyuan(extracted_text)
    
    return processed_result

# 使用示例
if __name__ == "__main__":
    image_path = "员工登记表.jpeg"  # 确保图片文件存在
    
    if os.path.exists(image_path):
        result = extract_table_from_image(image_path)
        print("\n最终结果:")
        print(result)
    else:
        print(f"图片文件不存在: {image_path}")
  • 输出结果:
代码语言:javascript
复制
```json
{
  "公司名称": "",
  "应聘岗位": "",
  "身份": ["实习生", "社会人士"],
  "填表日期": {
    "年": "",
    "月": "",
    "日": ""
  },
  "个人信息": {
    "姓名": "",
    "性别": "",
    "出生年月": "",
    "籍贯": "",
    "民族": "",
    "政治面貌": "",
    "健康状况": "",
    "婚姻状况": "",
    "身高/体重": {
      "cm": "",
      "kg": ""
    },
    "学历": "",
    "毕业院校": "",
    "专业": "",
    "移动电话": "",
    "身份证号": "",
    "现居住地": "",
    "家庭住址": ""
  },
  "紧急联系人": {
    "姓名": "",
    "关系": "",
    "电话": ""
  },
  "期望薪资": "",
  "职业状态": ["在职", "已离职"],
  "可到岗时间": "",
  "是否有亲戚或朋友在本公司任职": {
    "有": "",
    "无": ""
  },
  "介绍人": "",
  "是否服从调配": ["是", "否"],
  "教育经历": [
    {
      "起止时间": "",
      "学校名称": "",
      "专业": "",
      "所获奖励证书": ""
    }
  ],
  "工作经历": [
    {
      "起止时间": "",
      "单位名称": "",
      "职务": "",
      "离职原因": "",
      "证明人及联系方式": ""
    }
  ],
  "家庭成员": [
    {
      "关系": "",
      "姓名": "",
      "工作单位": "",
      "职务": "",
      "联系方式": ""
    }
  ],
  "自我评价": {
    "优势": "",
    "劣势": ""
  },
  "学历情况": {
    "统招生": ["已拿到毕业证", "应届毕业生, 学信网可查, 确定毕业可以拿到毕业证"],
    "自考生": ["已拿到毕业证", "毕业未拿到毕业证", "未毕业"]
  },
  "声明": "本人保证以上所填内容、个人简历完全属实,且为本人亲自填写,如有虚假,由此带来的法律后果由个人承担!",
  "填表人": "",
  "日期": ""
}

3.通过混元大模型兼容的OpenAI接口使用API-KEY的base-url进行模型调用

代码语言:python
复制
import json
import os
from openai import OpenAI

# 注意:这个接口可能需要企业版或特殊申请
# 请参考腾讯云官方文档确认当前可用的OpenAI兼容接口地址
api_key = os.environ.get('TENCENT_API_KEY')

client = OpenAI(
    api_key=api_key,
    # base_url可能需要根据腾讯云的最新文档进行修改
    base_url="https://api.hunyuan.cloud.tencent.com/v1",  
)

try:
    completion = client.chat.completions.create(
        model="hunyuan-lite",  # 模型名称
        messages=[
            {'role': 'system', 'content': '你是一个快乐的小助手'},
            {'role': 'user', 'content': 'AI大模型可以为我们做些什么?'}
        ],
        # 注意:腾讯混元可能不支持extra_body参数,或者参数名不同
        # extra_body={
        #     "enable_search": True  # 联网搜索可能需要其他方式开启
        # }
    )
    
    # 输出JSON格式
    print(json.dumps(completion.model_dump(), ensure_ascii=False, indent=2))
    
except Exception as e:
    print(f"调用失败: {e}")
    print("\n建议使用腾讯云官方SDK(第一个方案)进行调用")

4. 使用腾讯云官方SDK调用腾讯混元

代码语言:python
复制
import json
import os
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models

# 腾讯云API密钥 - 从环境变量获取或直接设置
SECRET_ID = os.environ.get("TENCENTCLOUD_SECRET_ID", "your-secret-id")
SECRET_KEY = os.environ.get("TENCENTCLOUD_SECRET_KEY", "your-secret-key")

def get_completion(messages, model="hunyuan-lite", enable_search=False):
    """
    调用腾讯混元大模型
    
    参数:
    - messages: 消息列表,格式与OpenAI兼容
    - model: 模型名称,可选: hunyuan-lite, hunyuan-standard, hunyuan-pro
    - enable_search: 是否启用联网搜索(注意:腾讯混元可能需要特定配置才能启用搜索)
    """
    try:
        # 实例化认证对象
        cred = credential.Credential(SECRET_ID, SECRET_KEY)
        
        # 实例化HTTP选项
        http_profile = HttpProfile()
        http_profile.endpoint = "hunyuan.tencentcloudapi.com"
        
        # 实例化客户端配置
        client_profile = ClientProfile()
        client_profile.httpProfile = http_profile
        
        # 实例化客户端
        client = hunyuan_client.HunyuanClient(cred, "ap-guangzhou", client_profile)
        
        # 构建请求
        req = models.ChatCompletionsRequest()
        
        # 转换为腾讯云要求的格式
        formatted_messages = []
        for msg in messages:
            role_map = {
                "system": "system",
                "user": "user", 
                "assistant": "assistant"
            }
            formatted_messages.append(models.Message(
                Role=role_map.get(msg["role"], "user"),
                Content=msg["content"]
            ))
        
        # 构建请求参数
        request_params = {
            "Model": model,
            "Messages": [{"Role": msg.Role, "Content": msg.Content} for msg in formatted_messages],
            "Stream": False,
            "Temperature": 0.7
        }
        
        # 注意:腾讯混元的联网搜索功能可能需要通过特定参数或模型版本开启
        # 请参考官方文档配置,这里暂时无法直接设置enable_search参数
        if enable_search:
            # 某些模型版本可能支持联网搜索
            # 例如:request_params["Search"] = True
            print("注意:腾讯混元联网搜索功能需要参考官方文档配置")
        
        req.FromJsonString(json.dumps(request_params))
        
        # 发送请求
        resp = client.ChatCompletions(req)
        
        # 返回完整的响应对象,方便后续处理
        return {
            "model": model,
            "choices": [{
                "message": {
                    "role": "assistant",
                    "content": resp.Choices[0].Message.Content
                }
            }],
            "usage": {
                "prompt_tokens": resp.Usage.PromptTokens,
                "completion_tokens": resp.Usage.CompletionTokens,
                "total_tokens": resp.Usage.TotalTokens
            } if hasattr(resp, 'Usage') else {}
        }
            
    except Exception as e:
        return {"error": str(e)}

# 调用示例
if __name__ == "__main__":
    # 准备消息
    messages = [
        {'role': 'system', 'content': '你是一个快乐的小助手'},
        {'role': 'user', 'content': 'AI大模型可以为我们做些什么?'}
    ]
    
    # 调用模型
    completion = get_completion(
        messages=messages,
        model="hunyuan-lite",  # 可选择: hunyuan-lite, hunyuan-standard, hunyuan-pro
        enable_search=False  # 注意:联网搜索功能需要特殊配置
    )
    
    # 输出结果
    if "error" in completion:
        print(f"调用失败: {completion['error']}")
    else:
        # 输出JSON格式的响应
        print(json.dumps(completion, ensure_ascii=False, indent=2))
        
        # 或者只输出回复内容
        print("\n回复内容:")
        print(completion["choices"][0]["message"]["content"])
  • 输出结果:
代码语言:json
复制
{
  "id": "fbce53f988861b2796e9bc8d8f31d4d9",
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "AI大模型具有强大的自然语言处理和理解能力,可以为我们做很多事情,包括但不限于以下几个方面:\n\n1. **智能问答**:AI大模型可以理解和回答各种问题,无论是常识性问题、专业领域的问题,还是模糊的、不完整的问题。它们能够迅速准确地提取关键信息,并 
给出有用的答案。\n\n2. **文本生成与编辑**:AI大模型可以生成文章、故事、诗歌、新闻报道等文本内容,辅助创作者进行创作。此外,它们还
可以对已有文本进行润色、修改和优化,提高文本的质量。\n\n3. **情感分析**:AI大模型能够分析文本中的情感倾向,例如判断用户评论是正面
还是负面,或者识别文本中所表达的情感状态。\n\n4. **语言翻译**:AI大模型可以实现多种语言之间的自动翻译,帮助人们跨越语言障碍,促进
国际交流与合作。\n\n5. **语音识别与合成**:AI大模型可以将语音转换为文本,也可以将文本转换为语音,实现语音交互功能,提高人机交互的
便捷性和智能化水平。\n\n6. **图像识别与生成**:结合计算机视觉技术,AI大模型可以识别图像中的物体、场景和人脸等信息,也可以生成符合
特定主题和风格的图像。\n\n7. **推荐系统**:AI大模型可以根据用户的兴趣和历史行为数据,为用户提供个性化的推荐服务,如音乐、电影、商
品等。\n\n8. **智能客服与机器人**:AI大模型可以作为智能客服助手,解答用户的问题,提供业务支持。同时,它们还可以应用于机器人领域,
实现自主导航、物品搬运等功能。\n\n9. **教育与培训**:AI大模型可以根据学生的学习情况和需求,为其提供个性化的学习方案和辅导建议,提
高学习效果。\n\n10. **科研与创新**:AI大模型在科研领域也有广泛的应用,如药物发现、基因编辑、新材料研发等,为科研人员提供强大的计 
算能力和数据分析工具,推动科技创新和发展。\n\n总之,AI大模型作为人工智能的重要技术之一,正在逐渐渗透到我们生活的方方面面,为我们 
带来更加智能、便捷和高效的生活方式。",
        "refusal": null,
        "role": "assistant",
        "annotations": null,
        "audio": null,
        "function_call": null,
        "tool_calls": null
      }
    }
  ],
  "created": 1765334474,
  "model": "hunyuan-lite",
  "object": "chat.completion",
  "service_tier": null,
  "system_fingerprint": "",
  "usage": {
    "completion_tokens": 428,
    "prompt_tokens": 16,
    "total_tokens": 444,
    "completion_tokens_details": null,
    "prompt_tokens_details": null
  },
  "note": "以上内容为AI生成,不代表开发者立场,请勿删除或修改本标记"
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、了解大模型
  • 二、混元云大模型
  • 三、API调用与示例
    • 1. API-KEY申请
    • 2. 调用示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档