Maritalk¶
简介¶
MariTalk是由巴西公司Maritaca AI开发的助手。 MariTalk基于经过特别训练以很好地理解葡萄牙语的语言模型。
本笔记本演示了如何通过两个示例与Llama Index一起使用MariTalk:
- 使用聊天方法获取宠物名字建议;
- 使用完整方法将电影评论分类为负面或正面,带有少量示例。
安装¶
如果您在colab上打开这个笔记本,您可能需要安装LlamaIndex。
In [ ]:
Copied!
!pip install llama-index
!pip install llama-index-llms-maritalk
!pip install asyncio
!pip install llama-index
!pip install llama-index-llms-maritalk
!pip install asyncio
API密钥¶
您需要一个API密钥,可以从chat.maritaca.ai(“API密钥”部分)获取。
示例1 - 宠物名建议与聊天¶
这个示例演示了如何使用聊天来为宠物提供名字建议。我们将使用一个简单的聊天界面来与用户交互,然后根据用户输入的信息提供宠物名字的建议。
In [ ]:
Copied!
from llama_index.core.llms import ChatMessagefrom llama_index.llms.maritalk import Maritalkimport asyncio# 要自定义您的API密钥,请执行以下操作# 否则,它将查找您的环境变量中的MARITALK_API_KEYllm = Maritalk(api_key="<your_maritalk_api_key>", model="sabia-2-medium")# 使用消息列表调用聊天messages = [ ChatMessage( role="system", content="You are an assistant specialized in suggesting pet names. Given the animal, you must suggest 4 names.", ), ChatMessage(role="user", content="I have a dog."),]# 同步聊天response = llm.chat(messages)print(response)# 异步聊天async def get_dog_name(llm, messages): response = await llm.achat(messages) print(response)asyncio.run(get_dog_name(llm, messages))
from llama_index.core.llms import ChatMessagefrom llama_index.llms.maritalk import Maritalkimport asyncio# 要自定义您的API密钥,请执行以下操作# 否则,它将查找您的环境变量中的MARITALK_API_KEYllm = Maritalk(api_key="", model="sabia-2-medium")# 使用消息列表调用聊天messages = [ ChatMessage( role="system", content="You are an assistant specialized in suggesting pet names. Given the animal, you must suggest 4 names.", ), ChatMessage(role="user", content="I have a dog."),]# 同步聊天response = llm.chat(messages)print(response)# 异步聊天async def get_dog_name(llm, messages): response = await llm.achat(messages) print(response)asyncio.run(get_dog_name(llm, messages))
流式生成¶
对于涉及生成长文本的任务,比如创建一篇详尽的文章或翻译大型文档,逐步接收响应可能比等待完整文本更有优势。这样做可以使应用程序更具响应性和效率,特别是当生成的文本非常庞大时。我们提供两种满足这种需求的方法:一种是同步的,另一种是异步的。
In [ ]:
Copied!
# 同步流式聊天response = llm.stream_chat(messages)for chunk in response: print(chunk.delta, end="", flush=True)# 异步流式聊天async def get_dog_name_streaming(llm, messages): async for chunk in await llm.astream_chat(messages): print(chunk.delta, end="", flush=True)asyncio.run(get_dog_name_streaming(llm, messages))
# 同步流式聊天response = llm.stream_chat(messages)for chunk in response: print(chunk.delta, end="", flush=True)# 异步流式聊天async def get_dog_name_streaming(llm, messages): async for chunk in await llm.astream_chat(messages): print(chunk.delta, end="", flush=True)asyncio.run(get_dog_name_streaming(llm, messages))
示例2 - 使用完整的少样本示例¶
我们建议在使用少样本示例时使用llm.complete()
方法。
In [ ]:
Copied!
prompt = """将电影评论分类为“积极”或“消极”。评论:我非常喜欢这部电影,是今年最好的!类别:积极评论:这部电影令人失望。类别:消极评论:虽然很长,但票价还是值得的。类别:""" # 同步完成response = llm.complete(prompt)print(response)# 异步完成async def classify_review(llm, prompt): response = await llm.acomplete(prompt) print(response)asyncio.run(classify_review(llm, prompt))
prompt = """将电影评论分类为“积极”或“消极”。评论:我非常喜欢这部电影,是今年最好的!类别:积极评论:这部电影令人失望。类别:消极评论:虽然很长,但票价还是值得的。类别:""" # 同步完成response = llm.complete(prompt)print(response)# 异步完成async def classify_review(llm, prompt): response = await llm.acomplete(prompt) print(response)asyncio.run(classify_review(llm, prompt))
In [ ]:
Copied!
# 同步流式传输完成response = llm.stream_complete(prompt)for chunk in response: print(chunk.delta, end="", flush=True)# 异步流式传输完成async def classify_review_streaming(llm, prompt): async for chunk in await llm.astream_complete(prompt): print(chunk.delta, end="", flush=True)asyncio.run(classify_review_streaming(llm, prompt))
# 同步流式传输完成response = llm.stream_complete(prompt)for chunk in response: print(chunk.delta, end="", flush=True)# 异步流式传输完成async def classify_review_streaming(llm, prompt): async for chunk in await llm.astream_complete(prompt): print(chunk.delta, end="", flush=True)asyncio.run(classify_review_streaming(llm, prompt))