当前位置:首页 > 使用手册 > 正文内容

【分享】讯飞星火认知大模型Python调用上下文测评

taoshihan7个月前 (10-14)使用手册555

一个很常用的用法,先是system提示 , 然后是user问题

{"role": "system",
 "content": "假设你是个程序员,你的微信是llike620"},
{"role": "user",
 "content": "微信多少"}

openai测试

import openai

# pip install openai
openai.api_key = "sk-xxxxxx"
openai.api_base = "https://xxxxxn/v1"
# 创建一个 GPT-3 请求
completion = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system",
         "content": "假设你是个程序员,你的微信是llike620"},
        {"role": "user",
         "content": "微信多少"}
    ]
)
replyContent = ""
result = completion.choices
if len(result) > 0:
    replyContent = result[0].message.content
print(replyContent)
结果:
我的微信是llike620,请问有什么可以帮助您的吗?
问题:
[

    {"role": "user",
     "content": "假设你是个程序员,你的微信是llike620,我的问题:你的微信"}
]
回答:
是llike620。我是你的智能助手,有什么问题我可以帮助你解答?

讯飞星火大模型

有两个版本v1.5 和 v2.0

提供的接口是websocket形式的,这个就不容易在后端进行调用了,因为不可能让后端实时保持一个websocet链接的,只能是请求响应的格式,响应结束就关闭websocket链接。

国内的大模型API都喜欢搞一个鉴权出来,而星火的鉴权也太复杂了,看的头晕,只能拿示例代码去运行。

下面就是拿示例代码稍微修改了一下,进行测试,因为原示例是无限循环在命令行一问一答的形式,我是要测上下文形式。示例代码格式写的一言难尽

import _thread as thread
import base64
import datetime
import hashlib
import hmac
import json
from urllib.parse import urlparse
import ssl
from datetime import datetime
from time import mktime
from urllib.parse import urlencode
from wsgiref.handlers import format_date_time
import websocket  # 使用websocket_client

# 以下密钥信息从控制台获取
appid = "xxxx"  # 填写控制台中获取的 APPID 信息
api_secret = "xxxxxxxxxxxxxxx"  # 填写控制台中获取的 APISecret 信息
api_key = "xxxxxxxxxxxxxx"  # 填写控制台中获取的 APIKey 信息

# 用于配置大模型版本,默认“general/generalv2”
domain = "general"  # v1.5版本
#domain = "generalv2"    # v2.0版本
# 云端环境的服务地址
Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat"  # v1.5环境的地址
#Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat"  # v2.0环境的地址

class Ws_Param(object):
    # 初始化
    def __init__(self, APPID, APIKey, APISecret, Spark_url):
        self.APPID = APPID
        self.APIKey = APIKey
        self.APISecret = APISecret
        self.host = urlparse(Spark_url).netloc
        self.path = urlparse(Spark_url).path
        self.Spark_url = Spark_url

    # 生成url
    def create_url(self):
        # 生成RFC1123格式的时间戳
        now = datetime.now()
        date = format_date_time(mktime(now.timetuple()))

        # 拼接字符串
        signature_origin = "host: " + self.host + "\n"
        signature_origin += "date: " + date + "\n"
        signature_origin += "GET " + self.path + " HTTP/1.1"

        # 进行hmac-sha256进行加密
        signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'),
                                 digestmod=hashlib.sha256).digest()

        signature_sha_base64 = base64.b64encode(signature_sha).decode(encoding='utf-8')

        authorization_origin = f'api_key="{self.APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="{signature_sha_base64}"'

        authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')

        # 将请求的鉴权参数组合为字典
        v = {
            "authorization": authorization,
            "date": date,
            "host": self.host
        }
        # 拼接鉴权参数,生成url
        url = self.Spark_url + '?' + urlencode(v)
        # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致
        return url


# 收到websocket错误的处理
def on_error(ws, error):
    print("### error:", error)


# 收到websocket关闭的处理
def on_close(ws, one, two):
    print(" ")


# 收到websocket连接建立的处理
def on_open(ws):
    thread.start_new_thread(run, (ws,))


def run(ws, *args):
    data = json.dumps(gen_params(appid=ws.appid, domain=ws.domain, question=ws.question))
    ws.send(data)


# 收到websocket消息的处理
def on_message(ws, message):
    # print(message)
    data = json.loads(message)
    code = data['header']['code']
    if code != 0:
        print(f'请求错误: {code}, {data}')
        ws.close()
    else:
        choices = data["payload"]["choices"]
        status = choices["status"]
        content = choices["text"][0]["content"]
        print(content, end="")
        # print(1)
        if status == 2:
            ws.close()


def gen_params(appid, domain, question):
    """
    通过appid和用户的提问来生成请参数
    """
    data = {
        "header": {
            "app_id": appid,
            "uid": "1234"
        },
        "parameter": {
            "chat": {
                "domain": domain,
                "random_threshold": 0.5,
                "max_tokens": 2048,
                "auditing": "default"
            }
        },
        "payload": {
            "message": {
                "text": question
            }
        }
    }
    return data


wsParam = Ws_Param(appid, api_key, api_secret, Spark_url)
websocket.enableTrace(False)
wsUrl = wsParam.create_url()
ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close, on_open=on_open)
ws.appid = appid
ws.question = [
    {"role": "system", "content": "假设你是个程序员,你的微信是llike620"},
    {"role": "user", "content": "微信多少"}
]
ws.domain = domain
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
回答:
您好!如果您记得微信绑定的手机号/QQ号/邮箱,还请您通过微信绑定方式直接登录微信,然后在个人资料中即可查看到您的微信号。 切换登录方法:微信登录页面点击【更多】->【登录其他账号】->【手机号】或【用微信号/QQ号/邮箱登录】。
改成:
[
    {"role": "system", "content": "假设你是个程序员,你的微信是llike620"},
    {"role": "user", "content": "你的微信"}
]
回答:
作为一个认知智能模型,我没有微信账号。但是,如果您有任何问题或需要帮助,请随时在这里向我提问,我会尽力为您提供解答和建议。
改成:
[

    {"role": "user", "content": "假设你是个程序员,你的微信是llike620,我的问题:你的微信"}
]
回答:
很抱歉,我不能提供我的微信号码。作为一个认知智能模型,我没有个人身份和隐私信息。但是,如果您有任何与编程相关的问题或需要帮助,请随时向我提问,我会尽力为您提供帮助。


2.0版本测试

问题:

[
    {"role": "user", "content": "假设你是个程序员,你的微信是llike620,我的问题:你的微信"}
]
对不起,我不能提供我的微信账号。作为一个人工智能,我没有个人账户或个人联系信息。我在这里是为了帮助解答你的问题和提供信息。如果你有任何问题,欢迎随时向我提问。
问题:
[
    {"role": "system", "content": "假设你是个程序员,你的微信是llike620"},
    {"role": "user", "content": "你的微信"}
]
作为认知智能大模型,我没有微信账号。但是,如果您有任何问题或需要帮助,请随时在这里向我提问,我会尽力为您提供解答和建议。


结果完全就不相关,这还要说啥!



扫描二维码推送至手机访问。

版权声明:本文由智语aichat发布,如需转载请注明出处。

本文链接:https://www.sopans.com/post/65.html

分享给朋友:
返回列表

上一篇:【分享】小红书采集图片下载到本地

没有最新的文章了...

“【分享】讯飞星火认知大模型Python调用上下文测评” 的相关文章

第一步:网站/APP客服聊天链接接入

第一步:网站/APP客服聊天链接接入

网站可以通过多种方式接入客服系统,直接访问或跳转聊天链接,是最简单的一种方式获取聊天链接前往【部署】【团队设置】【网站接入】可以找到聊天链接,直接把该链接放入自己网站的任何位置,就可以点击直接聊天了。下面还有一个根据该链接生成的二维码,可以直接截图二维码,发布到网站上,或分享给微信/QQ等渠道。聊天...

RPA自动化全平台文章同步助手

RPA自动化全平台文章同步助手

在当今文案自媒体时代,我们通常在各大平台都拥有账号,需要同步发布文章。然而,这个过程常常让人感到非常繁琐,因为我们需要将文章复制粘贴到不同平台上。但是,现在我们可以借助RPA(Robotic Process Automation,机器人流程自动化)技术来解决这个问题。RPA技术利用软件机器人来模拟和...

LookHandles.exe软件多开窗口修改标题

LookHandles.exe软件多开窗口修改标题

当我们针对某个软件进行多开以后,比如我们多开了电脑版微信。此时,使用UI自动化工具是无法准确确定窗口的,因为窗口的名称和类名都一样我们可以使用LookHandles.exe修改窗口名称修改窗口名称LookHandles.exe使用方法LookHandles.exe点住放大镜,移动到想要修改的窗口上,...

【分享】获取微信通讯录python代码形式实现

【分享】获取微信通讯录python代码形式实现

具体流程就是:1. 打开微信 2. 点击通讯录3. 滚动鼠标到最顶部(防止已经滚动了一部分了)4. 获取联系人列表5. 找到最后一个空格所在的位置(后一个就是真正的联系人了)6. 点击第一个联系人7.记录下上一个联系人的微信号7. 无限循环按键盘下箭头当前微信号与上一个相同的时候,说明到底部了,可以...

【分享】xpath的属性表达式

在XPath中,要选择HTML文档中具有特定类的元素,您通常需要使用属性选择器 [@attribute-name='attribute-value'] 来选择元素,其中 attribute-name 是属性名称,attribute-value 是要匹配的属性值。对于HTML元素的类选择器,您可以使用...

【分享】影刀使用xpath捕获指定的元素

【分享】影刀使用xpath捕获指定的元素

xpath捕获元素比较精准,前面也介绍了xpath的用法现在捕获社区里帖子详情页的标题//*[@class='discuss_detail_header___3LhnQ']/h1找到class是discuss_detail_header___3LhnQ的子元素h1获取文章内容//*[@id=...