Python调用讯飞星火大模型v3.x api接口使用教程2.0(python sdk,支持图片理解)

07-06 1620阅读

前言

        本篇文章是针对星火大模型api接口使用的新篇章,本次主要是介绍对于pythonSDK使用,以及图片理解等新功能。相对于上篇博客中的使用方法,本次的教程相对来说更简单方便。话不多说,直接享用。

Python调用讯飞星火大模型v3.x api接口使用教程2.0(python sdk,支持图片理解)

1、获取api接口的ID和key

        参考上篇文章:

https://blog.csdn.net/qq_45156060/article/details/134072123?spm=1001.2014.3001.5501Python调用讯飞星火大模型v3.x api接口使用教程2.0(python sdk,支持图片理解)https://blog.csdn.net/qq_45156060/article/details/134072123?spm=1001.2014.3001.5501

这个图片理解的功能也是需要申请key,流程一样,同时也有200万免费token

2、python调用 

2.1、安装环境

   项目仅支持 Python3.8+

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple spark_ai_python

Upgrade

如果清华源版本不可用,请使用一下命令升级到最新版本:

pip install -i  https://repo.model.xfyun.cn/api/packages/administrator/pypi/simple  spark_ai_python --upgrade

2.2、一次性返回结果(非流式)代码实战

# coding: utf-8 
import os
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
try:
    from dotenv import load_dotenv
except ImportError:
    raise RuntimeError('Python environment for SPARK AI is not completely set up: required package "python-dotenv" is missing.') from None
load_dotenv()
if __name__ == '__main__':
    appid = ""  # 填写控制台中获取的 APPID 信息
    api_secret = ""  # 填写控制台中获取的 APISecret 信息
    api_key = ""  # 填写控制台中获取的 APIKey 信息
    spark = ChatSparkLLM(
        spark_api_url="wss://spark-api.xf-yun.com/v3.5/chat",
        spark_app_id=appid,
        spark_api_key=api_key,
        spark_api_secret=api_secret,
        spark_llm_domain="generalv3.5",
        streaming=False,
    )
    messages = [ChatMessage(
        role="user",
        content='你好呀'
    )]
    a = spark.generate([messages])
    for response in a.generations:
        print(response[0].text)

注意当streaming设置为 False的时候, callbacks 并不起作用。

这里要说一下历史对话问题:

Python调用讯飞星火大模型v3.x api接口使用教程2.0(python sdk,支持图片理解)

如上图,数组中传入格式,最大索引为本次最新问题,其他为历史对话

2.3、流式返回结果代码实战

import os
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler,AsyncChunkPrintHandler
from sparkai.core.messages import ChatMessage
# spark 授权信息
SPARKAI_APP_ID=''
SPARKAI_API_KEY=''
SPARKAI_API_SECRET=''
def test_starcoder(text):
    """
    不带历史的单输入
    :param text:
    :return:
    """
    messages = [{'role': 'user',
                 'content': text}]
    spark = ChatSparkLLM(
        spark_api_url="wss://spark-api.xf-yun.com/v3.5/chat",
        spark_app_id=SPARKAI_APP_ID,
        spark_api_key=SPARKAI_API_KEY,
        spark_api_secret=SPARKAI_API_SECRET,
        spark_llm_domain="generalv3.5",
        streaming=True,
        max_tokens= 1024,
    )
    messages = [
                ChatMessage(
                        role="user",
                        content=messages[0]['content']
    )]
    a = spark.stream(messages)
    for message in a:
        print(message.content)
if __name__ == '__main__':
    t = '今天世界和平吗'
    test_starcoder(t)

2.4、异步流式输出

# spark 授权信息
SPARKAI_APP_ID=''
SPARKAI_API_KEY=''
SPARKAI_API_SECRET=''
async def test_astream():
    from sparkai.log.logger import logger
    #logger.setLevel("debug")
    from sparkai.core.callbacks import StdOutCallbackHandler
    messages = [{'role': 'user',
                 'content': "帮我生成一段代码,爬取baidu.com"}]
    spark = ChatSparkLLM(
        spark_api_url="wss://xingchen-api.cn-huabei-1.xf-yun.com/v1.1/chat",
        spark_app_id=SPARKAI_APP_ID,
        spark_api_key=SPARKAI_API_KEY,
        spark_api_secret=SPARKAI_API_SECRET,
        spark_llm_domain="xsstarcoder27binst",
        streaming=True,
        max_tokens= 1024,
    )
    messages = [
                ChatMessage(
                        role="user",
                        content=messages[0]['content']
    )]
    handler = AsyncChunkPrintHandler()
    a = spark.astream(messages, config={"callbacks": [handler]})
    async for message in a:
        print(message)
if __name__ == '__main__':
    import asyncio
    asyncio.run(test_astream())

2.5 图片理解实战

import base64
import os
from sparkai.core.messages import ImageChatMessage
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
SPARKAI_APP_ID=''
SPARKAI_API_KEY=''
SPARKAI_API_SECRET=''
image_content = base64.b64encode(open("屏幕截图 2024-05-20 101725.png",'rb').read())
spark = ChatSparkLLM(
    # spark_api_url="wss://spark-api.xf-yun.com/v3.5/chat",
    spark_app_id=SPARKAI_APP_ID,
    spark_api_key=SPARKAI_API_KEY,
    spark_api_secret=SPARKAI_API_SECRET,
    spark_llm_domain="image",
    streaming=False,
    user_agent="test"
)
messages = [ImageChatMessage(
    role="user",
    content=image_content,
    content_type="image"
),ImageChatMessage(
    role="user",
    content="这是什么图",
    content_type="text"
)]
handler = ChunkPrintHandler()
a = spark.generate([messages], callbacks=[])
print(a)

注意:这个key不能用3.5大模型的,这个是独立的

交流群进群方式Python调用讯飞星火大模型v3.x api接口使用教程2.0(python sdk,支持图片理解)

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]