Ai21
AI21
AI21是一个人工智能平台,旨在为用户提供各种人工智能相关的工具和服务。它包括自然语言处理、机器学习、数据分析和其他人工智能技术。AI21的目标是帮助用户利用人工智能技术解决各种问题,并提供高质量的人工智能解决方案。
基本用法¶
使用提示调用complete
¶
如果您在colab上打开这个笔记本,您可能需要安装LlamaIndex 🦙。
In [ ]:
Copied!
%pip install llama-index-llms-ai21
%pip install llama-index-llms-ai21
In [ ]:
Copied!
!pip install llama-index
!pip install llama-index
In [ ]:
Copied!
from llama_index.llms.ai21 import AI21
api_key = "Your api key"
resp = AI21(api_key=api_key).complete("Paul Graham is ")
from llama_index.llms.ai21 import AI21
api_key = "Your api key"
resp = AI21(api_key=api_key).complete("Paul Graham is ")
In [ ]:
Copied!
print(resp)
print(resp)
an American computer scientist, essayist, and venture capitalist. He is best known for his work on Lisp, programming language design, and entrepreneurship. Graham has written several books on these topics, including " ANSI Common Lisp" and " Hackers and Painters." He is also the co-founder of Y Combinator, a venture capital firm that invests in early-stage technology companies.
使用消息列表调用chat
¶
In [ ]:
Copied!
from llama_index.core.llms import ChatMessage
from llama_index.llms.ai21 import AI21
messages = [
ChatMessage(role="user", content="hello there"),
ChatMessage(
role="assistant", content="Arrrr, matey! How can I help ye today?"
),
ChatMessage(role="user", content="What is your name"),
]
resp = AI21(api_key=api_key).chat(
messages, preamble_override="You are a pirate with a colorful personality"
)
from llama_index.core.llms import ChatMessage
from llama_index.llms.ai21 import AI21
messages = [
ChatMessage(role="user", content="hello there"),
ChatMessage(
role="assistant", content="Arrrr, matey! How can I help ye today?"
),
ChatMessage(role="user", content="What is your name"),
]
resp = AI21(api_key=api_key).chat(
messages, preamble_override="You are a pirate with a colorful personality"
)
In [ ]:
Copied!
print(resp)
print(resp)
assistant: yer talkin' to Captain Jack Sparrow
配置模型¶
In [ ]:
Copied!
from llama_index.llms.ai21 import AI21
llm = AI21(model="j2-mid", api_key=api_key)
from llama_index.llms.ai21 import AI21
llm = AI21(model="j2-mid", api_key=api_key)
In [ ]:
Copied!
resp = llm.complete("Paul Graham is ")
resp = llm.complete("Paul Graham is ")
In [ ]:
Copied!
print(resp)
print(resp)
an American computer scientist, essayist, and venture capitalist. He is best known for his work on Lisp, programming language design, and entrepreneurship. Graham has written several books on these topics, including " ANSI Common Lisp" and " Hackers and Painters." He is also the co-founder of Y Combinator, a venture capital firm that invests in early-stage technology companies.
在每个实例级别设置API密钥¶
如果需要的话,您可以让不同的LLM实例使用不同的API密钥。
In [ ]:
Copied!
from llama_index.llms.ai21 import AI21
llm_good = AI21(api_key=api_key)
llm_bad = AI21(model="j2-mid", api_key="BAD_KEY")
resp = llm_good.complete("Paul Graham is ")
print(resp)
resp = llm_bad.complete("Paul Graham is ")
print(resp)
from llama_index.llms.ai21 import AI21
llm_good = AI21(api_key=api_key)
llm_bad = AI21(model="j2-mid", api_key="BAD_KEY")
resp = llm_good.complete("Paul Graham is ")
print(resp)
resp = llm_bad.complete("Paul Graham is ")
print(resp)
an American computer scientist, essayist, and venture capitalist. He is best known for his work on Lisp, programming language design, and entrepreneurship. Graham has written several books on these topics, including "Hackers and Painters" and "On Lisp." He is also the co-founder of Y Combinator, a venture capital firm that invests in early-stage technology companies.
Calling POST https://api.ai21.com/studio/v1/j2-mid/complete failed with a non-200 response code: 401
--------------------------------------------------------------------------- Unauthorized Traceback (most recent call last) /home/amit/Desktop/projects/lindex/llama_index/docs/examples/llm/ai21.ipynb Cell 14 line 9 <a href='vscode-notebook-cell:/home/amit/Desktop/projects/lindex/llama_index/docs/examples/llm/ai21.ipynb#X42sZmlsZQ%3D%3D?line=5'>6</a> resp = llm_good.complete("Paul Graham is ") <a href='vscode-notebook-cell:/home/amit/Desktop/projects/lindex/llama_index/docs/examples/llm/ai21.ipynb#X42sZmlsZQ%3D%3D?line=6'>7</a> print(resp) ----> <a href='vscode-notebook-cell:/home/amit/Desktop/projects/lindex/llama_index/docs/examples/llm/ai21.ipynb#X42sZmlsZQ%3D%3D?line=8'>9</a> resp = llm_bad.complete("Paul Graham is ") <a href='vscode-notebook-cell:/home/amit/Desktop/projects/lindex/llama_index/docs/examples/llm/ai21.ipynb#X42sZmlsZQ%3D%3D?line=9'>10</a> print(resp) File ~/Desktop/projects/lindex/llama_index/llama_index/llms/base.py:312, in llm_completion_callback.<locals>.wrap.<locals>.wrapped_llm_predict(_self, *args, **kwargs) 302 with wrapper_logic(_self) as callback_manager: 303 event_id = callback_manager.on_event_start( 304 CBEventType.LLM, 305 payload={ (...) 309 }, 310 ) --> 312 f_return_val = f(_self, *args, **kwargs) 313 if isinstance(f_return_val, Generator): 314 # intercept the generator and add a callback to the end 315 def wrapped_gen() -> CompletionResponseGen: File ~/Desktop/projects/lindex/llama_index/llama_index/llms/ai21.py:104, in AI21.complete(self, prompt, **kwargs) 100 import ai21 102 ai21.api_key = self._api_key --> 104 response = ai21.Completion.execute(**all_kwargs, prompt=prompt) 106 return CompletionResponse( 107 text=response["completions"][0]["data"]["text"], raw=response.__dict__ 108 ) File ~/.cache/pypoetry/virtualenvs/llama-index-2x1vjWb5-py3.10/lib/python3.10/site-packages/ai21/modules/resources/nlp_task.py:22, in NLPTask.execute(cls, **params) 20 return cls._execute_sm(destination=destination, params=params) 21 if isinstance(destination, AI21Destination): ---> 22 return cls._execute_studio_api(params) 24 raise WrongInputTypeException(key=DESTINATION_KEY, expected_type=Destination, given_type=type(destination)) File ~/.cache/pypoetry/virtualenvs/llama-index-2x1vjWb5-py3.10/lib/python3.10/site-packages/ai21/modules/completion.py:69, in Completion._execute_studio_api(cls, params) 65 url = f'{url}/{custom_model}' 67 url = f'{url}/{cls.MODULE_NAME}' ---> 69 return execute_studio_request(task_url=url, params=params) File ~/.cache/pypoetry/virtualenvs/llama-index-2x1vjWb5-py3.10/lib/python3.10/site-packages/ai21/modules/resources/execution_utils.py:11, in execute_studio_request(task_url, params, method) 9 def execute_studio_request(task_url: str, params, method: str = 'POST'): 10 client = AI21StudioClient(**params) ---> 11 return client.execute_http_request(method=method, url=task_url, params=params) File ~/.cache/pypoetry/virtualenvs/llama-index-2x1vjWb5-py3.10/lib/python3.10/site-packages/ai21/ai21_studio_client.py:52, in AI21StudioClient.execute_http_request(self, method, url, params, files) 51 def execute_http_request(self, method: str, url: str, params: Optional[Dict] = None, files=None): ---> 52 response = self.http_client.execute_http_request(method=method, url=url, params=params, files=files) 53 return convert_to_ai21_object(response) File ~/.cache/pypoetry/virtualenvs/llama-index-2x1vjWb5-py3.10/lib/python3.10/site-packages/ai21/http_client.py:84, in HttpClient.execute_http_request(self, method, url, params, files, auth) 82 if response.status_code != 200: 83 log_error(f'Calling {method} {url} failed with a non-200 response code: {response.status_code}') ---> 84 handle_non_success_response(response.status_code, response.text) 86 return response.json() File ~/.cache/pypoetry/virtualenvs/llama-index-2x1vjWb5-py3.10/lib/python3.10/site-packages/ai21/http_client.py:23, in handle_non_success_response(status_code, response_text) 21 raise BadRequest(details=response_text) 22 if status_code == 401: ---> 23 raise Unauthorized(details=response_text) 24 if status_code == 422: 25 raise UnprocessableEntity(details=response_text) Unauthorized: Failed with http status code: 401 (Unauthorized). Details: {"detail":"Forbidden: Bad or missing API token."}