You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Or open our intro notebook in Google Colab: [<img align="center" src="https://colab.research.google.com/assets/colab-badge.svg" />](https://colab.research.google.com/github/stanfordnlp/dspy/blob/main/intro.ipynb)
66
72
67
73
By default, DSPy installs the latest `openai` from pip. However, if you install old version before OpenAI changed their API `openai~=0.28.1`, the library will use that just fine. Both are supported.
68
74
69
-
For the optional (alphabetically sorted) [Chromadb](https://github.com/chroma-core/chroma), [Qdrant](https://github.com/qdrant/qdrant), [Marqo](https://github.com/marqo-ai/marqo), Pinecone, or [Weaviate](https://github.com/weaviate/weaviate) retrieval integration(s), include the extra(s) below:
75
+
For the optional (alphabetically sorted) [Chromadb](https://github.com/chroma-core/chroma), [Qdrant](https://github.com/qdrant/qdrant), [Marqo](https://github.com/marqo-ai/marqo), Pinecone, [Weaviate](https://github.com/weaviate/weaviate),
76
+
or [Milvus](https://github.com/milvus-io/milvus) retrieval integration(s), include the extra(s) below:
70
77
71
78
```
72
-
pip install dspy-ai[chromadb] # or [qdrant] or [marqo] or [mongodb] or [pinecone] or [weaviate]
79
+
pip install dspy-ai[chromadb] # or [qdrant] or [marqo] or [mongodb] or [pinecone] or [weaviate] or [milvus]
73
80
```
74
81
75
82
## 2) Documentation
@@ -94,10 +101,11 @@ The DSPy documentation is divided into **tutorials** (step-by-step illustration
94
101
95
102
- [DSPy talk at ScaleByTheBay Nov 2023](https://www.youtube.com/watch?v=Dt3H2ninoeY).
96
103
- [DSPy webinar with MLOps Learners](https://www.youtube.com/watch?v=im7bCLW2aM4), a bit longer with Q&A.
97
-
- Hands-on Overviews of DSPy by the community: [DSPy Explained! by Connor Shorten](https://www.youtube.com/watch?v=41EfOY0Ldkc), [DSPy explained by code_your_own_ai](https://www.youtube.com/watch?v=ycfnKPxBMck)
104
+
- Hands-on Overviews of DSPy by the community: [DSPy Explained! by Connor Shorten](https://www.youtube.com/watch?v=41EfOY0Ldkc), [DSPy explained by code_your_own_ai](https://www.youtube.com/watch?v=ycfnKPxBMck), [DSPy Crash Course by AI Bites](https://youtu.be/5-zgASQKkKQ?si=3gnmVouT5_rpk_nu)
98
105
- Interviews: [Weaviate Podcast in-person](https://www.youtube.com/watch?v=CDung1LnLbY), and you can find 6-7 other remote podcasts on YouTube from a few different perspectives/audiences.
99
106
- **Tracing in DSPy** with Arize Phoenix: [Tutorial for tracing your prompts and the steps of your DSPy programs](https://colab.research.google.com/github/Arize-ai/phoenix/blob/main/tutorials/tracing/dspy_tracing_tutorial.ipynb)
100
107
- [DSPy: Not Your Average Prompt Engineering](https://jina.ai/news/dspy-not-your-average-prompt-engineering), why it's crucial for future prompt engineering, and yet why it is challenging for prompt engineers to learn.
108
+
- **Tracing & Optimization Tracking in DSPy** with Parea AI: [Tutorial on tracing & evaluating a DSPy RAG program](https://docs.parea.ai/tutorials/dspy-rag-trace-evaluate/tutorial)
101
109
102
110
### B) Guides
103
111
@@ -129,22 +137,29 @@ You can find other examples tweeted by [@lateinteraction](https://twitter.com/la
129
137
130
138
**Some other examples (not exhaustive, feel free to add more via PR):**
131
139
140
+
141
+
- [DSPy Optimizers Benchmark on a bunch of different tasks, by Michael Ryan](https://github.com/stanfordnlp/dspy/tree/main/testing/tasks)
142
+
- [Sophisticated Extreme Multi-Class Classification, IReRa, by Karel D’Oosterlinck](https://github.com/KarelDO/xmc.dspy)
143
+
- [Haize Lab's Red Teaming with DSPy](https://blog.haizelabs.com/posts/dspy/) and see [their DSPy code](https://github.com/haizelabs/dspy-redteam)
132
144
- Applying DSPy Assertions
133
145
- [Long-form Answer Generation with Citations, by Arnav Singhvi](https://colab.research.google.com/github/stanfordnlp/dspy/blob/main/examples/longformqa/longformqa_assertions.ipynb)
134
146
- [Generating Answer Choices for Quiz Questions, by Arnav Singhvi](https://colab.research.google.com/github/stanfordnlp/dspy/blob/main/examples/quiz/quiz_assertions.ipynb)
135
147
- [Generating Tweets for QA, by Arnav Singhvi](https://colab.research.google.com/github/stanfordnlp/dspy/blob/main/examples/tweets/tweets_assertions.ipynb)
136
148
- [Compiling LCEL runnables from LangChain in DSPy](https://github.com/stanfordnlp/dspy/blob/main/examples/tweets/compiling_langchain.ipynb)
137
149
- [AI feedback, or writing LM-based metrics in DSPy](https://github.com/stanfordnlp/dspy/blob/main/examples/tweets/tweet_metric.py)
138
-
-[DSPy Optimizers Benchmark on a bunch of different tasks, by Michael Ryan](https://github.com/stanfordnlp/dspy/tree/main/testing/tasks)
150
+
- [DSPy Optimizers Benchmark on a bunch of different tasks, by Michael Ryan](https://github.com/stanfordnlp/dspy/tree/main/testing/README.md)
139
151
- [Indian Languages NLI with gains due to compiling by Saiful Haq](https://github.com/saifulhaq95/DSPy-Indic/blob/main/indicxlni.ipynb)
140
-
-[Sophisticated Extreme Multi-Class Classification, IReRa, by Karel D’Oosterlinck](https://github.com/KarelDO/xmc.dspy)
141
152
- [DSPy on BIG-Bench Hard Example, by Chris Levy](https://drchrislevy.github.io/posts/dspy/dspy.html)
142
153
- [Using Ollama with DSPy for Mistral (quantized) by @jrknox1977](https://gist.github.com/jrknox1977/78c17e492b5a75ee5bbaf9673aee4641)
143
-
-[Using DSPy, "The Unreasonable Effectiveness of Eccentric Automatic Prompts" (paper) by VMware's Rick Battle & Teja Gollapudi, and interview at TheRegister](https://www.theregister.com/2024/02/22/prompt_engineering_ai_models/)
154
+
- [Using DSPy, "The Unreasonable Effectiveness of Eccentric Automatic Prompts" (paper) by VMware's Rick Battle & Teja Gollapudi](https://arxiv.org/abs/2402.10949), and [interview at TheRegister](https://www.theregister.com/2024/02/22/prompt_engineering_ai_models/)
155
+
- [Optimizing Performance of Open Source LM for Text-to-SQL using DSPy and vLLM, by Juan Ovalle](https://github.com/jjovalle99/DSPy-Text2SQL)
144
156
- Typed DSPy (contributed by [@normal-computing](https://github.com/normal-computing))
145
157
- [Using DSPy to train Gpt 3.5 on HumanEval by Thomas Ahle](https://github.com/stanfordnlp/dspy/blob/main/examples/functional/functional.ipynb)
146
158
- [Building a chess playing agent using DSPy by Franck SN](https://medium.com/thoughts-on-machine-learning/building-a-chess-playing-agent-using-dspy-9b87c868f71e)
147
159
160
+
161
+
TODO: Add links to the state-of-the-art results by the University of Toronto on Clinical NLP, on Theory of Mind (ToM) by Plastic Labs, and the DSPy pipeline from Replit.
162
+
148
163
There are also recent cool examples at [Weaviate's DSPy cookbook](https://github.com/weaviate/recipes/tree/main/integrations/dspy) by Connor Shorten. [See tutorial on YouTube](https://www.youtube.com/watch?v=CEuUG4Umfxs).
149
164
150
165
## 3) Syntax: You're in charge of the workflow—it's free-form Python code!
@@ -411,7 +426,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for a quickstart guide to contributing to
411
426
412
427
**DSPy** is led by **Omar Khattab** at Stanford NLP with **Chris Potts** and **Matei Zaharia**.
413
428
414
-
Key contributors and team members include **Arnav Singhvi**, **Krista Opsahl-Ong**, **Michael Ryan**, **Karel D'Oosterlinck**, **Shangyin Tan**, **Manish Shetty**, **Paridhi Maheshwari**, **Keshav Santhanam**, **Sri Vardhamanan**, **Eric Zhang**, **Hanna Moazam**, **Thomas Joshi**, **Saiful Haq**, **Ashutosh Sharma**, and **Herumb Shandilya**.
429
+
Key contributors and team members include **Arnav Singhvi**, **Krista Opsahl-Ong**, **Michael Ryan**, **Cyrus Nouroozi**, **Kyle Caverly**, **Amir Mehr**, **Karel D'Oosterlinck**, **Shangyin Tan**, **Manish Shetty**, **Herumb Shandilya**, **Paridhi Maheshwari**, **Keshav Santhanam**, **Sri Vardhamanan**, **Eric Zhang**, **Hanna Moazam**, **Thomas Joshi**, **Saiful Haq**, and **Ashutosh Sharma**.
415
430
416
431
**DSPy** includes important contributions from **Rick Battle** and **Igor Kotenkov**. It reflects discussions with **Peter Zhong**, **Haoze He**, **Lisa Li**, **David Hall**, **Ashwin Paranjape**, **Heather Miller**, **Chris Manning**, **Percy Liang**, and many others.
The constructor initializes the base class `LM` and verifies the provided arguments like the `api_provider`, `api_key`, and `api_base` to set up OpenAI request retrieval through Azure. The `kwargs` attribute is initialized with default values for relevant text generation parameters needed for communicating with the GPT API, such as `temperature`, `max_tokens`, `top_p`, `frequency_penalty`, `presence_penalty`, and `n`.
16
16
17
+
Azure requires that the deployment id of the Azure deployment to be also provided using the argument `deployment_id`.
18
+
17
19
```python
18
20
classAzureOpenAI(LM):
19
21
def__init__(
@@ -53,4 +55,4 @@ After generation, the completions are post-processed based on the `model_type` p
53
55
-`**kwargs`: Additional keyword arguments for completion request.
54
56
55
57
**Returns:**
56
-
-`List[Dict[str, Any]]`: List of completion choices.
58
+
-`List[Dict[str, Any]]`: List of completion choices.
You can customize requests by passing additional parameters such as `temperature`, `max_output_tokens`, and others supported by the Vertex AI API. This allows you to control the behavior of the text generation.
46
+
47
+
## Important Notes
48
+
49
+
- Make sure you have correctly set up access to Google Cloud to avoid authentication issues.
50
+
- Be aware of the quotas and limits of the Vertex AI API to prevent unexpected interruptions in service.
51
+
52
+
With this guide, you're ready to use `GoogleVertexAI` for interacting with Google Vertex AI's text and code generation services.
This guide provides instructions on how to use the `Watsonx` class to interact with IBM Watsonx.ai API for text and code generation.
4
+
5
+
## Requirements
6
+
7
+
- Python 3.10 or higher.
8
+
- The `ibm-watsonx-ai` package installed, which can be installed via pip.
9
+
- An IBM Cloud account and a Watsonx configured project.
10
+
11
+
## Installation
12
+
13
+
Ensure you have installed the `ibm-watsonx-ai` package along with other necessary dependencies:
14
+
15
+
## Configuration
16
+
17
+
Before using the `Watsonx` class, you need to set up access to IBM Cloud:
18
+
19
+
1. Create an IBM Cloud account
20
+
2. Enable a Watsonx service from the catalog
21
+
3. Create a new project and associate a Watson Machine Learning service instance.
22
+
4. Create an IAM authentication credentials and save them in a JSON file.
23
+
24
+
## Usage
25
+
26
+
Here's an example of how to instantiate the `Watsonx` class and send a generation request:
27
+
28
+
```python
29
+
import dspy
30
+
31
+
''' Initialize the class with the model name and parameters for Watsonx.ai
32
+
You can choose between many different models:
33
+
* (Mistral) mistralai/mixtral-8x7b-instruct-v01
34
+
* (Meta) meta-llama/llama-3-70b-instruct
35
+
* (IBM) ibm/granite-13b-instruct-v2
36
+
* and many others.
37
+
'''
38
+
watsonx=dspy.Watsonx(
39
+
model='mistralai/mixtral-8x7b-instruct-v01',
40
+
credentials={
41
+
"apikey": "your-api-key",
42
+
"url": "https://us-south.ml.cloud.ibm.com"
43
+
},
44
+
project_id="your-watsonx-project-id",
45
+
max_new_tokens=500,
46
+
max_tokens=1000
47
+
)
48
+
49
+
dspy.settings.configure(lm=watsonx)
50
+
```
51
+
52
+
## Customizing Requests
53
+
54
+
You can customize requests by passing additional parameters such as `decoding_method`,`max_new_tokens`, `stop_sequences`, `repetition_penalty`, and others supported by the Watsonx.ai API. This allows you to control the behavior of the generation.
55
+
Refer to [`ibm-watsonx-ai library`](https://ibm.github.io/watsonx-ai-python-sdk/index.html) documentation.
The `AWSMistral` constructor initializes the base class `AWSModel` which itself inherits from the `LM` class.
34
+
35
+
```python
36
+
classAWSMistral(AWSModel):
37
+
"""Mistral family of models."""
38
+
39
+
def__init__(
40
+
self,
41
+
aws_provider: AWSProvider,
42
+
model: str,
43
+
max_context_size: int=32768,
44
+
max_new_tokens: int=1500,
45
+
**kwargs
46
+
) -> None:
47
+
```
48
+
49
+
**Parameters:**
50
+
-`aws_provider` (AWSProvider): The aws provider to use. One of `dspy.Bedrock` or `dspy.Sagemaker`.
51
+
-`model` (_str_): Mistral AI pretrained models. For Bedrock, this is the Model ID in https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html#model-ids-arns. For Sagemaker, this is the endpoint name.
52
+
-`max_context_size` (_Optional[int]_, _optional_): Max context size for this model. Defaults to 32768.
53
+
-`max_new_tokens` (_Optional[int]_, _optional_): Max new tokens possible for this model. Defaults to 1500.
54
+
-`**kwargs`: Additional language model arguments to pass to the API provider.
55
+
56
+
### Methods
57
+
58
+
```python
59
+
def_format_prompt(self, raw_prompt: str) -> str:
60
+
```
61
+
This function formats the prompt for the model. Refer to the model card for the specific formatting required.
This function creates the body of the request to the model. It takes the prompt and any additional keyword arguments and returns a tuple of the number of tokens to generate and a dictionary of keys including the prompt used to create the body of the request.
69
+
70
+
<br/>
71
+
72
+
```python
73
+
def_call_model(self, body: str) -> str:
74
+
```
75
+
This function calls the model using the provider `call_model()` function and extracts the generated text (completion) from the provider-specific response.
76
+
77
+
<br/>
78
+
79
+
The above model-specific methods are called by the `AWSModel::basic_request()` method, which is the main method for querying the model. This method takes the prompt and any additional keyword arguments and calls the `AWSModel::_simple_api_call()` which then delegates to the model-specific `_create_body()` and `_call_model()` methods to create the body of the request, call the model and extract the generated text.
80
+
81
+
82
+
Refer to [`dspy.OpenAI`](https://dspy-docs.vercel.app/api/language_model_clients/OpenAI) documentation for information on the `LM` base class functionality.
83
+
84
+
<br/>
85
+
86
+
`AWSAnthropic` and `AWSMeta` work exactly the same as `AWSMistral`.
The `AWSProvider` class is the base class for the AWS providers - `dspy.Bedrock` and `dspy.Sagemaker`. An instance of one of these providers is passed to the constructor when creating an instance of an AWS model class (e.g., `dspy.AWSMistral`) that is ultimately used to query the model.
10
+
11
+
```python
12
+
# Notes:
13
+
# 1. Install boto3 to use AWS models.
14
+
# 2. Configure your AWS credentials with the AWS CLI before using these models
0 commit comments