Python调用讯飞星火大模型v3.x api接口使用教程2.0(python sdk,支持图片理解)
前言
本篇文章是针对星火大模型api接口使用的新篇章,本次主要是介绍对于pythonSDK使用,以及图片理解等新功能。相对于上篇博客中的使用方法,本次的教程相对来说更简单方便。话不多说,直接享用。
1、获取api接口的ID和key
参考上篇文章:
https://blog.csdn.net/qq_45156060/article/details/134072123?spm=1001.2014.3001.5501https://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 并不起作用。
这里要说一下历史对话问题:
如上图,数组中传入格式,最大索引为本次最新问题,其他为历史对话
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大模型的,这个是独立的
交流群进群方式
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。