| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- """
- 调用火山引擎ARK API的示例
- """
- from api_modules.ark_client import ArkClient, ArkMessage, APIError
- from taskflow.logger import get_logger
- logger = get_logger("api_modules.example")
- def example_basic_chat():
- """示例1:基本文本对话"""
- logger.info("=" * 50)
- logger.info("示例1:基本文本对话")
- logger.info("=" * 50)
-
- # 初始化客户端(API密钥可以从环境变量或配置文件获取)
- client = ArkClient()
-
- # 创建用户消息
- message = ArkMessage(role="user")
- message.add_text("你好,请介绍一下你自己")
-
- try:
- # 发送聊天请求
- response = client.chat(
- messages=[message]
- )
-
- logger.info("响应:", response)
-
- # 提取文本响应
- text = client.get_response_text(response)
- if text:
- logger.info(f"AI回复: {text}")
-
- except APIError as e:
- logger.error(f"API错误: {e}")
- except Exception as e:
- logger.error(f"其他错误: {e}")
- def example_chat_with_system_prompt():
- """示例2:使用系统提示词"""
- logger.info("\n" + "=" * 50)
- logger.info("示例2:使用系统提示词")
- logger.info("=" * 50)
-
- client = ArkClient()
-
- # 创建用户消息
- user_message = ArkMessage(role="user")
- user_message.add_text("请帮我写一首关于春天的诗")
-
- try:
- # 使用字符串形式的系统提示词
- response = client.chat(
- model="doubao-seed-1-6-251015",
- messages=[user_message],
- system_prompt="你是一位专业的诗人,擅长写优美的诗歌"
- )
-
- logger.info("响应:", response)
- text = client.get_response_text(response)
- if text:
- logger.info(f"AI回复: {text}")
-
- except APIError as e:
- logger.error(f"API错误: {e}")
- def example_multimodal_chat():
- """示例3:多模态对话(文本+图片)"""
- logger.info("\n" + "=" * 50)
- logger.info("示例3:多模态对话(文本+图片)")
- logger.info("=" * 50)
-
- client = ArkClient()
-
- # 创建包含图片和文本的用户消息
- user_message = ArkMessage(role="user")
- user_message.add_text("图片1中是否含有目标人物")
- user_message.add_image("https://ark-project.tos-cn-beijing.volces.com/doc_image/scene_01.png")
- user_message.add_text("图片2中是否含有目标人物")
- user_message.add_image("https://ark-project.tos-cn-beijing.volces.com/doc_image/scene_02.png")
-
- # 创建系统提示词(也支持多模态)
- system_message = ArkMessage(role="system")
- system_message.add_text("下面人物是目标人物")
- system_message.add_image("https://ark-project.tos-cn-beijing.volces.com/doc_image/target.png")
- system_message.add_text("请确认下面图片中是否含有目标人物")
-
- try:
- response = client.chat(
- model="doubao-seed-1-6-251015",
- messages=[user_message],
- system_prompt=system_message
- )
-
- logger.info("响应:", response)
- text = client.get_response_text(response)
- if text:
- logger.info(f"AI回复: {text}")
-
- except APIError as e:
- logger.error(f"API错误: {e}")
- def example_chat_simple():
- """示例4:使用简化的chat_simple接口"""
- logger.info("\n" + "=" * 50)
- logger.info("示例4:使用简化的chat_simple接口")
- logger.info("=" * 50)
-
- client = ArkClient()
-
- try:
- # 仅文本
- response = client.chat_simple(
- model="doubao-seed-1-6-251015",
- text="今天天气怎么样?"
- )
- logger.info("仅文本响应:", response)
-
- # 文本+图片
- response = client.chat_simple(
- model="doubao-seed-1-6-251015",
- text="你看见了什么?",
- image_url="https://ark-project.tos-cn-beijing.volces.com/doc_image/scene_01.png"
- )
- logger.info("文本+图片响应:", response)
-
- # 带系统提示词
- response = client.chat_simple(
- model="doubao-seed-1-6-251015",
- text="分析这张图片",
- image_url="https://example.com/image.png",
- system_prompt="你是一个专业的图像分析助手"
- )
- logger.info("带系统提示词响应:", response)
-
- except APIError as e:
- logger.error(f"API错误: {e}")
- def example_multiple_messages():
- """示例5:多轮对话"""
- logger.info("\n" + "=" * 50)
- logger.info("示例5:多轮对话")
- logger.info("=" * 50)
-
- client = ArkClient()
-
- # 创建多轮对话消息
- messages = [
- ArkMessage(role="user"),
- ArkMessage(role="user"),
- ArkMessage(role="user")
- ]
-
- messages[0].add_text("我的名字是张三")
- messages[1].add_text("我今年25岁")
- messages[2].add_text("请记住我的信息")
-
- try:
- response = client.chat(
- model="doubao-seed-1-6-251015",
- messages=messages,
- system_prompt="你是一个友好的助手,会记住用户提供的信息"
- )
-
- print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
- print(response)
- text = client.get_response_text(response)
- if text:
- logger.info(f"AI回复: {text}")
-
- except APIError as e:
- logger.error(f"API错误: {e}")
- def example_dict_format():
- """示例6:使用字典格式的消息"""
- logger.info("\n" + "=" * 50)
- logger.info("示例6:使用字典格式的消息")
- logger.info("=" * 50)
-
- client = ArkClient()
-
- # 使用字典格式的消息(直接对应API格式)
- messages = [
- {
- "role": "system",
- "content": [
- {"type": "input_text", "text": "你是一个专业的助手"}
- ]
- },
- {
- "role": "user",
- "content": [
- {"type": "input_text", "text": "你好"},
- {
- "type": "input_image",
- "image_url": "https://example.com/image.png"
- }
- ]
- }
- ]
-
- try:
- response = client.chat(
- model="doubao-seed-1-6-251015",
- messages=messages
- )
-
- logger.info("响应:", response)
-
- except APIError as e:
- logger.error(f"API错误: {e}")
- def example_error_handling():
- """示例7:错误处理"""
- logger.info("\n" + "=" * 50)
- logger.info("示例7:错误处理")
- logger.info("=" * 50)
-
- try:
- # 使用无效的API密钥
- client = ArkClient()
-
- message = ArkMessage(role="user")
- message.add_text("测试")
-
- response = client.chat(
- model="doubao-seed-1-6-251015",
- messages=[message]
- )
-
- except APIError as e:
- logger.error(f"捕获到API错误:")
- logger.error(f" 消息: {e.message}")
- logger.error(f" 状态码: {e.status_code}")
- logger.error(f" 响应: {e.response}")
- except ValueError as e:
- logger.error(f"参数错误: {e}")
- except Exception as e:
- logger.error(f"其他错误: {e}")
- def example_context_manager():
- """示例8:使用上下文管理器"""
- logger.info("\n" + "=" * 50)
- logger.info("示例8:使用上下文管理器")
- logger.info("=" * 50)
-
- # 使用with语句自动管理资源
- with ArkClient() as client:
- message = ArkMessage(role="user")
- message.add_text("你好")
-
- try:
- response = client.chat(
- model="doubao-seed-1-6-251015",
- messages=[message]
- )
- logger.info("响应:", response)
- except APIError as e:
- logger.error(f"API错误: {e}")
- # 客户端会自动关闭
- if __name__ == "__main__":
- # 注意:运行前请设置正确的API密钥
- # 方式1:通过环境变量设置
- # import os
- # os.environ["ARK_API_KEY"] = "your_api_key_here"
-
- # 方式2:直接在代码中传入(不推荐用于生产环境)
- # client = ArkClient(api_key="your_api_key_here")
-
- logger.info("火山引擎ARK API使用示例")
- logger.info("注意:请先设置正确的API密钥才能运行这些示例\n")
-
- # 取消注释以运行相应的示例
- # example_basic_chat()
- # example_chat_with_system_prompt()
- # example_multimodal_chat()
- # example_chat_simple()
- example_multiple_messages()
- # example_dict_format()
- # example_error_handling()
- # example_context_manager()
-
- logger.info("\n提示:取消注释上面的示例函数调用来运行示例")
|