# python_通义 **Repository Path**: ezemeti/python-tongyi ## Basic Information - **Project Name**: python_通义 - **Description**: Python调用通义千文API,并进行聊天 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-01-10 - **Last Updated**: 2024-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python调用通义千问 ![](https://img.alicdn.com/imgextra/i4/O1CN01c26iB51UyR3MKMFvk_!!6000000002586-2-tps-124-122.png) Qwen-72B是阿里云研发的一款具有720亿参数的超大规模预训练语言模型,其在多项复杂的自然语言理解、数学逻辑推理等任务上表现出色,并支持多语言处理。作为阿里巴巴开源的重要成果,Qwen-72B在提升人工智能领域技术水平和应用能力方面发挥了积极作用。 # 申请通义千问API 地址:[如何快速开始通义千问\_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)](https://help.aliyun.com/zh/dashscope/developer-reference/quick-start "如何快速开始通义千问_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)") ![](image/image_SK5YRhRsY5.png) ![](image/image_kGLQyBRsiK.png) ![](image/image_Qr5JD3eQo0.png) ![](image/image_wCO-gvvygU.png) # 模型类型 ![](image/image_mKWyraD2ix.png) # 代码 ### 导入库与下载库 ```python pip install dashscope ``` 导入库 ```python import random from http import HTTPStatus from dashscope.api_entities.dashscope_response import Role import dashscope dashscope.api_key = "xxxxxxxxxxxxxxxxxx" # 请将此处替换为自己的API Key ``` ### 初始化聊天记录 ```python # 初始化对话历史记录 """ # 需要导入from dashscope.api_entities.dashscope_response import Role { "role": Role.USER, # 此处是 'user',代表着用户 "content": "content" # 此处用户输入的内容 } { "role": Role.SYSTEM # 此处是 'system',代表着是此次对话的标题(用过chatgpt的应该了解) "content": "content" # 此处是对话的第一句话也是标题。 } { "role": Role.ASSISTANT # 此处是 'assistant',代表着机器人(api) "content": "content" # 机器人的输出 } # 这些都用一个列表存储在一起 # 因此,我们可以通过这种方式存储对话的缓存,也可以自定义对话内容。 """ dialog_history = [ {'role': Role.SYSTEM, 'content': '我是谁'}, {'role': Role.USER, 'content': '介绍'}, {'role': Role.ASSISTANT, 'content': '好的,我记住了!'} ] ``` ### 开始调用 ```python def multi_round_conversation(content): global dialog_history # 将用户输入添加到对话历史中 dialog_history.append({'role': Role.USER, 'content': content}) response = dashscope.Generation.call( 'qwen-max-1201', # 此处是 'qwen-max-1201',请将此处替换为自己的模型名称 messages=dialog_history, seed=random.randint(1, 1000), result_format='message' ) if response.status_code == HTTPStatus.OK: # print(response) assistant_message = { 'role': response.output.choices[0]['message']['role'], 'content': response.output.choices[0]['message']['content'] } dialog_history.append(assistant_message) # 将AI助手的回答添加到对话历史中 print('AI助手:', assistant_message['content']) else: print('Request id: %s, Status code: %s, error code: %s, error message: %s' % ( response.request_id, response.status_code, response.code, response.message )) ``` ### 进行图片聊天 ```python def simple_multimodal_conversation_call(img,question): messages = [ { "role": "user", "content": [ {"image": f"{img}"}, {"text": f"{question}"} ] } ] response = dashscope.MultiModalConversation.call(model='qwen-max-1201', messages=messages) if response.status_code == HTTPStatus.OK: print(response.output.choices[0]['message']['content'][0]['text']) else: print(response.code) print(response.message) ``` # 完整代码 ```python import random from http import HTTPStatus from dashscope.api_entities.dashscope_response import Role import dashscope dashscope.api_key = "xxxxxxxxxxxxxxxxxx" # 请将此处替换为自己的API Key # 初始化对话历史记录 """ # 需要导入from dashscope.api_entities.dashscope_response import Role { "role": Role.USER, # 此处是 'user',代表着用户 "content": "content" # 此处用户输入的内容 } { "role": Role.SYSTEM # 此处是 'system',代表着是此次对话的标题(用过chatgpt的应该了解) "content": "content" # 此处是对话的第一句话也是标题。 } { "role": Role.ASSISTANT # 此处是 'assistant',代表着机器人(api) "content": "content" # 机器人的输出 } # 这些都用一个列表存储在一起 # 因此,我们可以通过这种方式存储对话的缓存,也可以自定义对话内容。 """ dialog_history = [ {'role': Role.SYSTEM, 'content': '我是谁'}, {'role': Role.USER, 'content': '介绍'}, {'role': Role.ASSISTANT, 'content': '好的,我记住了!'} ] def multi_round_conversation(content): global dialog_history # 将用户输入添加到对话历史中 dialog_history.append({'role': Role.USER, 'content': content}) response = dashscope.Generation.call( 'qwen-max-1201', # 此处是 'qwen-max-1201',请将此处替换为自己的模型名称 messages=dialog_history, seed=random.randint(1, 1000), result_format='message' ) if response.status_code == HTTPStatus.OK: # print(response) assistant_message = { 'role': response.output.choices[0]['message']['role'], 'content': response.output.choices[0]['message']['content'] } dialog_history.append(assistant_message) # 将AI助手的回答添加到对话历史中 print('AI助手:', assistant_message['content']) else: print('Request id: %s, Status code: %s, error code: %s, error message: %s' % ( response.request_id, response.status_code, response.code, response.message )) while True: # 获取最新一轮的用户输入 content = input('你:') if content == 'exit': break multi_round_conversation(content) ``` ![](image/image_eB-GvjV0Qx.png)