侧边栏壁纸
  • 累计撰写 7 篇文章
  • 累计创建 7 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

实现终端中向大模型提问

ManJieqi
2024-04-08 / 0 评论 / 0 点赞 / 275 阅读 / 0 字

本文将介绍如何使用诸如dashscope、zhipuai等大模型厂商提供的Python库,在终端中与AI互动,实现文本和图片的生成。

以下内容涉及环境配置、库的安装、API密钥的获取,以及简单脚本的编写。这些步骤将帮助你轻松地尝试并探索人工智能的强大功能。

前提条件

  • 拥有Python环境,如果尚未安装Python,访问Python官网下载并安装

安装Python库

打开PowerShell或命令提示符,使用pip安装dashscope库

# 安装库
pip install dashscope
# 更新库
pip install --upgrade dashscope

创建API-KEY

设置环境变量

PowerShell

# 输入以下命令以设置临时环境变量。将YOUR_DASHSCOPE_API_KEY替换为实际API-KEY。
$env:DASHSCOPE_API_KEY = "YOUR_DASHSCOPE_API_KEY"

# 如果希望环境变量持久化(即,环境变量在重启后依然有效),执行以下命令:
[Environment]::SetEnvironmentVariable("DASHSCOPE_API_KEY", "YOUR_DASHSCOPE_API_KEY", "User")
# 重启终端生效

命令提示符

# 输入以下命令以设置临时环境变量。将YOUR_DASHSCOPE_API_KEY替换为实际API-KEY。
set DASHSCOPE_API_KEY=YOUR_DASHSCOPE_API_KEY

# 如果希望环境变量持久化(即,环境变量在重启后依然有效),执行以下命令:
setx DASHSCOPE_API_KEY "YOUR_DASHSCOPE_API_KEY"
# 重启终端生效

创建Python脚本

创建一个名为qwen-max.py的Python脚本,并粘贴以下代码:

import random
import sys
from http import HTTPStatus
import dashscope


def call_with_user_input(user_message):
    messages = [{"role": "user", "content": user_message}]
    response = dashscope.Generation.call(
        "qwen-max",
        messages=messages,
        seed=random.randint(1, 10000),
        result_format='message',
    )
    if response.status_code == HTTPStatus.OK:
        print(response.output.choices[0].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
        ))


if __name__ == '__main__':
    # 检查是否提供了命令行参数(即用户直接在命令行中输入了问题)
    if len(sys.argv) > 1:
        user_message = " ".join(sys.argv[1:])  # 将所有命令行参数连接成一个字符串
    else:
        # 如果没有提供命令行参数,提示用户输入问题
        print("Please enter your question:")
        user_message = input()  # 等待用户输入

    call_with_user_input(user_message)

运行方法

在脚本所在目录下,通过以下方式运行脚本:

# 直接在命令行中指定问题:
python qwen-max.py 你的问题

# 运行脚本后按提示输入问题:
python qwen-max.py

简化命令

创建一个名为qwen.bat的批处理文件,并输入以下内容:

@echo off
python "D:\MyScripts\qwen-max.py" %*

将批处理文件所在路径添加到环境变量中

# Powershell
$userPath = [Environment]::GetEnvironmentVariable("PATH", "User")
$newPath = $userPath + "D:\MyScripts;"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "User")

这样,可以简单地使用以下命令

qwen 你的问题

ChatGLM

注册网址:智谱开放平台

Python库:pip install zhipuai pip install --upgrade zhipuai

环境变量:ZHIPUAI_API_KEY

glm-4.py

import sys
import os
from zhipuai import ZhipuAI

# Retrieve API key from environment variable
api_key = os.environ.get("ZHIPUAI_API_KEY")
if not api_key:
    print("API key is not set.")
    sys.exit(1)

# Initialize the client
client = ZhipuAI(api_key=api_key)

# Check if command-line arguments are provided
try:
    if len(sys.argv) > 1:
        user_message = " ".join(sys.argv[1:])
    else:
        print("Please enter your question:")
        user_message = input()

    # Call the API
    response = client.chat.completions.create(
        model="glm-4",  # Replace with the model you want to use
        messages=[
            {"role": "user", "content": user_message}
        ],
    )

    # Print the response
    print(response.choices[0].message.content)
except Exception as e:
    print(f"An error occurred: {e}")

glm-4.py 连续提问,注意修改脚本中对话历史的目录history_dir ,使用glm clear清除对话记录

import sys
import os
import json
from zhipuai import ZhipuAI

# 从环境变量获取 API 密钥
api_key = os.environ.get("ZHIPUAI_API_KEY")
if not api_key:
    print("API 密钥未设置。")
    sys.exit(1)

# 初始化客户端
client = ZhipuAI(api_key=api_key)

# 指定保存对话历史的目录
history_dir = r'D:\Software\Scripts'

# 确保目录存在,如果不存在则创建
if not os.path.exists(history_dir):
    os.makedirs(history_dir)

# 对话历史文件的完整路径
history_file = os.path.join(history_dir, 'conversation_history.json')

# 如果对话历史文件存在,则加载历史记录
if os.path.exists(history_file):
    with open(history_file, 'r', encoding='utf-8') as f:
        messages = json.load(f)
else:
    messages = []

try:
    if len(sys.argv) > 1:
        user_message = " ".join(sys.argv[1:])
    else:
        print("请输入您的问题:")
        user_message = input()

    if user_message.lower() == 'clear':
        # 删除历史文件,重置对话
        if os.path.exists(history_file):
            os.remove(history_file)
        print("对话历史已重置。")
        sys.exit(0)

    # 将用户消息添加到对话历史
    messages.append({"role": "user", "content": user_message})

    # 提示用户正在生成回复
    print("正在生成,请稍后...")

    # 使用对话历史调用 API
    response = client.chat.completions.create(
        model="glm-4-plus",
        messages=messages,
    )

    # 获取助手的回复
    assistant_message = response.choices[0].message.content

    # 将助手的回复添加到对话历史
    messages.append({"role": "assistant", "content": assistant_message})

    # 保存更新后的对话历史
    with open(history_file, 'w', encoding='utf-8') as f:
        json.dump(messages, f, ensure_ascii=False, indent=2)

    # 显示助手的回复
    print(assistant_message)
except Exception as e:
    print(f"发生错误:{e}")

glm.bat

@echo off
python "D:\MyScripts\glm-4.py" %*

cogview-3.py

import sys
import os
from zhipuai import ZhipuAI

# 从环境变量中获取API密钥
api_key = os.environ.get("ZHIPUAI_API_KEY")
if not api_key:
    print("API key is not set.")
    sys.exit(1)

# 初始化客户端
client = ZhipuAI(api_key=api_key)

# 检查是否提供了命令行参数
try:
    if len(sys.argv) > 1:
        user_message = " ".join(sys.argv[1:])
    else:
        print("Please enter your description:")
        user_message = input()

    # 调用API
    response = client.images.generations(
        model="cogview-3",
        prompt=user_message,
    )

    # 打印响应
    print(response.data[0].url)
except Exception as e:
    print(f"An error occurred: {e}")

cogview.bat

@echo off
python "D:\MyScripts\cogview-3.py" %*

0

评论区